Napisz funkcję (lub równoważny podprogram), aby zaakceptować pojedynczy argument o wartości całkowitej i zwrócić (o podobnym typie) wartość znalezioną przez odwrócenie kolejności 10-cyfrowych cyfr argumentu.
Na przykład podany 76543 zwraca 34567
Napisz funkcję (lub równoważny podprogram), aby zaakceptować pojedynczy argument o wartości całkowitej i zwrócić (o podobnym typie) wartość znalezioną przez odwrócenie kolejności 10-cyfrowych cyfr argumentu.
Na przykład podany 76543 zwraca 34567
Odpowiedzi:
‮n
zamień na nswój numer
Your search - - nie pasuje do żadnych dokumentów.
data:text/html,&%238238;egnahcxEkcatS olleH
Pyton
int(str(76543)[::-1])
EDYTOWAĆ:
Krótsze rozwiązanie sugerowane przez @gnibbler:
int(`76543`[::-1])
lub, jeśli powyższe nie jest jasne:
x=76543
int(`x`[::-1])
s[::-1]jest znacznie szybszy niż''.join(reversed(s))
Uniwersalny (język agnostyczny / niezależny )
Jeśli chcesz używać tylko liczb (unikaj konwersji liczby na ciąg) i nie chcesz używać określonej biblioteki (uniwersalnej dla dowolnego języka):
x = 76543 # or whatever is your number
y = 0
while x > 0:
y *= 10
y += ( x %10 )
x /= 10 # int division
To jest python, ale można to zrobić w dowolnym języku, ponieważ jest to tylko metoda matematyczna.
modsię %, że to ważne Python;)
y=y*10+x%10....
".|.":y
Gdzie y jest twoją wartością.
|.&.":„reverse under do”, co jest dosłownie tłumaczeniem zadania.
Kompletny program do uruchomienia:
N.@
Gdzie Njest twój numer Reguły mówią: „zaakceptuj argument o wartości całkowitej ”; W Befunge możesz wprowadzać tylko liczby całkowite od 0 do 9.
Zainspirowany powyższą odpowiedzią Kirila Kirowa. Zainteresowałem się matematycznymi właściwościami odwracania liczby, więc postanowiłem trochę zbadać.
Okazuje się, że jeśli wykreślisz różnicę n - rev(n)dla liczb naturalnych nw jakiejś podstawie r, otrzymasz takie wzory ( (n - rev(n)) / (r - 1)dla r=10, zawinięte w rkolumny, czerwony oznacza liczbę ujemną):

Ta sekwencja może być wygenerowana jako taka (pseudokod):
for i=1 to r:
output 0
for m=0, 1, …
for k=1 to (r-1):
for d=1 to r^m:
for i=0 to (r-1):
output (r-1) * (r+1)^m * (k - i)
Jeśli przechowujesz te wartości w liście / tablicy, n - arr[n]otrzymasz odwróconą formę n. Teraz, aby „matematycznie golfa” to, chcielibyśmy mieć wyrażenie w formie zamkniętej, które daje nam n-tą wartość w sekwencji, abyśmy mogli mieć wyrażenie w kształcie zamkniętym do rozwiązania całego zadania. Niestety nie udało mi się znaleźć takiego wyrażenia ... ale wygląda na to, że powinno być możliwe. :(
Więc tak, nie tyle golfowy kod, co matematyczna ciekawość, ale jeśli istnieje wyrażenie o zamkniętej formie powyższej sekwencji, może być faktycznie przydatne w prawidłowym składaniu PL golfa.
f=read.reverse.show.(+0)
f=read.reverse.show.(+0)?
(+0): Legit man! Chociaż technicznie wcale nie jest to potrzebne .(+0), ponieważ fbyłby bardziej polimorficzny niż wymaga tego problem (dozwolone jest zwracanie wyjścia „podobnie typowanego”). Ogoliłbym te 5 postaci.
:se ri<CR>C<C-R>"
Scala - 33 znaki
def r(a:Int)=(a+"").reverse.toInt
x = 13456
x.to_s.reverse
.to_s.reverse.to_izgodny ze specyfikacją.
Można przekonwertować liczbę na ciąg, a następnie odwrócić ciąg, a następnie przekonwertować ten ciąg z powrotem na liczbę. Ten rodzaj funkcji jest prawdopodobnie dostępny we wszystkich językach. Jeśli szukasz bardziej matematycznej metody, może to pomóc:
int n = 76543;
int r = 0;
while (n > 0) {
r *= 10;
r += n % 10;
n /= 10;
}
1111111119
`-1%~
To bierze argument na stosie i pozostawia wynik na stosie. Korzystam z opcji „podprogramu” w specyfikacji: jeśli nalegasz na funkcję, to o cztery znaki więcej pozostawiając ją na stosie:
{`-1%~}:r
`-1%~raczej chcieć niż `-1$~(i pozwoliłem sobie na edytowanie twojej odpowiedzi, żeby tak powiedzieć).
W skryptach powłoki:
echo "your number"|rev
Mam nadzieję, że to się przydało :)
rev<<<yournumbernp rev<<<132(dla bash / zsh, choć nie za POSIX)
rev, pytanie nie mówi, że to musi być funkcja. Możesz porównać revdo wbudowanej funkcji, nawet jeśli nie jest to jedna.
Trochę późno, ale
⍎⌽⍞
Jeśli nalegasz na funkcję
⍎∘⌽∘⍕
IntegerReverse
To nie jest konkurencja, ponieważ ta funkcja została dodana tylko w wydaniu 10.3 z zeszłego tygodnia, ale dla kompletności pomyślałem, że dodam jedyne (jak sądzę?) Wbudowane do tego zadania.
Możesz wykonać następujące czynności w Javie. Zauważ, że konwertuje to na String i wstecz i nie jest matematycznym rozwiązaniem.
public class test {
public static int reverseInt(int i) {
return Integer.valueOf((new StringBuffer(String.valueOf(i))).reverse().toString());
}
public static void main(String[] args) {
int i = 1234;
System.out.println("reverse("+i+") -> " + reverseInt(i));
}
}
43 znaki. num jako parametr funkcji:
num.toString().split('').reverse().join('')
(first(list(parse-integer(reverse(write-to-string '4279)))))
dostaniesz 9724.
(first(list? parse-integerjuż zwraca numer.
#
+#(.*)(.)/\2#\1
#/
Technicznie to się nie liczy (rs został utworzony wcześniej w tym roku), ale nie widziałem żadnych innych odpowiedzi opartych na wyrażeniach regularnych i pomyślałem, że to było fajne.
#
Wstaw znak funta na początku ciągu. Jest to używane jako marker.
+#(.*)(.)/\2#\1
Ciągle dodawaj ostatni znak głównego ciągu do obszaru przed znacznikiem, dopóki nie pozostaną żadne znaki.
#/
Usuń znacznik.