Tek bir tamsayı değerli argümanı kabul etmek için bir fonksiyon (veya eşdeğer bir alt program) yazın ve argümanın taban-10 basamağının sırasını tersine çevirerek bulunan (benzer şekilde yazılmış) bir değer döndürün.
Örneğin verilen 76543, 34567
Tek bir tamsayı değerli argümanı kabul etmek için bir fonksiyon (veya eşdeğer bir alt program) yazın ve argümanın taban-10 basamağının sırasını tersine çevirerek bulunan (benzer şekilde yazılmış) bir değer döndürün.
Örneğin verilen 76543, 34567
Yanıtlar:
‮n
n
numaranızla değiştirin
Your search -
- hiçbir belgeyle eşleşmedi.
data:text/html,&%238238;egnahcxEkcatS olleH
piton
int(str(76543)[::-1])
DÜZENLE:
@Gnibbler tarafından önerilen daha kısa çözüm:
int(`76543`[::-1])
veya, yukarıda belirsiz ise:
x=76543
int(`x`[::-1])
s[::-1]
daha hızlıdır''.join(reversed(s))
Evrensel (dil bağımsız / bağımsız )
Kullanmak isterseniz sayıları yalnızca (önlemek dizeye numarası dönüştürme) ve yapamaz bazı kullanmak istediğiniz belirli (herhangi bir dil için evrensel olması) kütüphane:
x = 76543 # or whatever is your number
y = 0
while x > 0:
y *= 10
y += ( x %10 )
x /= 10 # int division
Bu python, ancak herhangi bir dilde yapılabilir, çünkü bu sadece bir matematik metodu.
mod
ile %
, geçerli Python var;)
y=y*10+x%10
....
".|.":y
Değerin nerede y?
|.&.":
hemen hemen görevin değişmez çevirisi olan "tersine çevir".
Tam çalıştırılabilir program:
N.@
Numaran nerede N
? Kurallar " tek bir tamsayı değerli argümanı kabul et " diyor; Befunge'de sadece 0 - 9 arasındaki tamsayıları girebilirsiniz.
Kiril Kirov'un yukarıdaki cevabından ilham aldı. Bir sayıyı ters çevirmenin matematiksel özelliklerini merak ettim, bu yüzden biraz araştırmaya karar verdim.
n - rev(n)
Doğal sayılar n
arasındaki farkı bir tabanda çizerseniz r
, şöyle bir kalıp elde edersiniz (örneğin (n - rev(n)) / (r - 1)
, sütunlara r=10
sarılmış r
, kırmızı negatif sayıları belirtir):
Bu dizi şöyle (pseudocode) oluşturulabilir:
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)
Bu değerleri bir listede / dizide saklarsanız, n - arr[n]
tersine çevrilmiş halini alırsınız n
. Şimdi, bunu “matematiksel olarak golf” için ideal olarak, dizideki n: inci değerini veren kapalı formlu bir ifade isteriz, böylece tüm görevi çözmek için kapalı formlu bir ifade verebilirdik. Ne yazık ki, böyle bir ifade bulamadım ... ama mümkün olması gerektiği gibi görünüyor . :(
Öyleyse, evet, matematiksel bir merak kadar bir kod-golf değil, ancak yukarıdaki dizinin kapalı bir ifadesi varsa, gerçekten uygun PL golf gönderimlerinde faydalı olabilir.
f=read.reverse.show.(+0)
f=read.reverse.show.(+0)
?
(+0)
: Yasal adam! Gerçi teknik olarak gerekmez .(+0)
olarak, hiç f
sorun gerektirir olandan daha polimorfik olurdu (bir 'benzer daktilo' çıktı dönmesi için izin verilir). Bu 5 karakteri tıraş ederdim.
:se ri<CR>C<C-R>"
x = 13456
x.to_s.reverse
.to_s.reverse.to_i
Spesifikasyona uymak gerekiyor .
Bir sayıyı bir dizgeye dönüştürmek, daha sonra dizgiyi tersine çevirmek ve bu dizgiyi tekrar sayıya dönüştürmek mümkündür. Bu tür bir özellik muhtemelen tüm dillerde mevcuttur. Daha matematiksel bir yöntem arıyorsanız o zaman bu yardımcı olabilir:
int n = 76543;
int r = 0;
while (n > 0) {
r *= 10;
r += n % 10;
n /= 10;
}
1111111119
r=lambda i:int(str(i)[::-1])
print(input()[::-1])
Diğer Python örneklerinden bazılarının, kodlanmış girdi kullanımı ve / veya gereklilikleri tam olarak karşılamaması nedeniyle aldatma veya en azından ucuz olduğunu düşünüyorum.
`-1%~
Bu, yığında argüman alır ve sonucu yığında bırakır. Spesifikasyondaki "subprogram" seçeneğini kullanıyorum: bir fonksiyon için ısrar ediyorsanız, yığında dört karakter daha kalıyor:
{`-1%~}:r
`-1%~
yerine `-1$~
(ve bunu söylemek cevabınızı düzenleme özgürlüğünü geçtiniz).
Kabuk komut dosyasında:
echo "your number"|rev
Umarım bu yararlı oldu :)
rev<<<yournumber
örneğin rev<<<132
(gerçi bash / zsh için, POSIX başına)
rev
soru demiyor, yeter sahip bir fonksiyon olmak. Yerleşik rev
bir işlevle karşılaştırabilirsiniz, olmasa bile.
Biraz geç ama
⍎⌽⍞
Eğer bir fonksiyon için ısrar ediyorsanız
⍎∘⌽∘⍕
IntegerReverse
Bu rekabet etmiyor, çünkü bu fonksiyon sadece geçen haftaki 10.3 sürümünde eklenmiş, ancak tam olması için bu görev için yerleşik olan sadece (sanırım?) Ekleyeceğimi düşündüm.
Java ile aşağıdakileri yapabilirsiniz. Bunun String'e ve back'e dönüştüğünü ve matematiksel bir çözüm olmadığını unutmayın.
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 karakter işleve parametre olarak num:
num.toString().split('').reverse().join('')
(first(list(parse-integer(reverse(write-to-string '4279)))))
seni 9724 alacak.
(first(list
? parse-integer
Zaten sayıyı döndürür.
#
+#(.*)(.)/\2#\1
#/
Teknik olarak, bu sayılmaz (rs bu yılın başlarında oluşturuldu), ancak regex tabanlı başka bir cevap görmedim ve bunun düzgün olduğunu düşündüm.
#
Dizenin başına bir pound karakteri ekleyin. Bu bir işaretleyici olarak kullanılır.
+#(.*)(.)/\2#\1
Ana dizginin son karakterini, işaretten önceki alana, karakter kalana kadar sürekli olarak hazırlayın.
#/
İşaretçiyi çıkartın.