Viết hàm (hoặc chương trình con tương đương) để chấp nhận một đối số có giá trị nguyên duy nhất và trả về giá trị (được gõ tương tự) được tìm thấy bằng cách đảo ngược thứ tự của 10 chữ số cơ sở của đối số.
Ví dụ: 76543 trả lại 34567
Viết hàm (hoặc chương trình con tương đương) để chấp nhận một đối số có giá trị nguyên duy nhất và trả về giá trị (được gõ tương tự) được tìm thấy bằng cách đảo ngược thứ tự của 10 chữ số cơ sở của đối số.
Ví dụ: 76543 trả lại 34567
Câu trả lời:
‮n
thay thế n
bằng số của bạn
Your search -
- không khớp với bất kỳ tài liệu nào.
data:text/html,&%238238;egnahcxEkcatS olleH
Con trăn
int(str(76543)[::-1])
CHỈNH SỬA:
Giải pháp ngắn hơn theo đề xuất của @gnibbler:
int(`76543`[::-1])
hoặc, nếu ở trên không rõ ràng:
x=76543
int(`x`[::-1])
s[::-1]
nhanh hơn rất nhiều so với''.join(reversed(s))
Phổ cập (ngôn ngữ bất khả tri / độc lập )
Nếu bạn muốn chỉ sử dụng số (tránh chuyển đổi số thành chuỗi) và không muốn sử dụng một số thư viện cụ thể (để phổ biến cho bất kỳ ngôn ngữ nào):
x = 76543 # or whatever is your number
y = 0
while x > 0:
y *= 10
y += ( x %10 )
x /= 10 # int division
Đây là python, nhưng nó có thể được thực hiện bằng bất kỳ ngôn ngữ nào, bởi vì nó chỉ là một phương pháp toán học.
mod
bằng %
, nó hợp lệ Python;)
y=y*10+x%10
....
".|.":y
Trong đó y là giá trị của bạn.
|.&.":
"đảo ngược dưới làm" gần như là một bản dịch nghĩa đen của nhiệm vụ.
Hoàn thành chương trình runnable:
N.@
Trong trường hợp N
là số của bạn. Các quy tắc nói "chấp nhận một đối số có giá trị nguyên "; Trong Befunge, bạn chỉ có thể nhập số nguyên từ 0 đến 9.
Lấy cảm hứng từ câu trả lời của Kiril Kirov ở trên. Tôi tò mò về các tính chất toán học của việc đảo ngược một số, vì vậy tôi quyết định điều tra một chút.
Hóa ra nếu bạn vẽ sự khác biệt n - rev(n)
cho các số tự nhiên n
trong một số cơ sở r
, bạn sẽ có được các mẫu như thế này ( (n - rev(n)) / (r - 1)
, cho r=10
, được bọc tại r
các cột, màu đỏ biểu thị số âm):
Trình tự này có thể được tạo ra như vậy (mã giả):
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)
Nếu bạn lưu trữ các giá trị này trong một danh sách / mảng, thì n - arr[n]
nó sẽ giúp bạn có dạng đảo ngược n
. Bây giờ, để "đánh gôn về mặt toán học" này, lý tưởng nhất là chúng ta muốn một biểu thức dạng đóng mang lại cho chúng ta giá trị n: thứ tự để chúng ta có thể có biểu thức dạng đóng để giải toàn bộ tác vụ. Thật không may, tôi đã không thể tìm thấy một biểu hiện như vậy ... nhưng có vẻ như nó là có thể. :
Vì vậy, vâng, không phải là một môn đánh gôn mã như một sự tò mò toán học, nhưng nếu có một biểu thức dạng đóng của trình tự trên, nó thực sự có thể hữu ích trong việc đệ trình golf PL thích hợp.
f=read.reverse.show.(+0)
f=read.reverse.show.(+0)
?
(+0)
: Người đàn ông hợp pháp! Mặc dù về mặt kỹ thuật, bạn hoàn toàn không cần .(+0)
, nhưng f
sẽ đa hình hơn so với những gì vấn đề yêu cầu (nó được phép trả lại đầu ra 'được gõ tương tự'). Tôi sẽ cạo đi 5 ký tự đó.
:se ri<CR>C<C-R>"
x = 13456
x.to_s.reverse
.to_s.reverse.to_i
tuân thủ thông số kỹ thuật.
Có thể chuyển đổi một số một chuỗi, sau đó đảo ngược chuỗi và sau đó chuyển đổi chuỗi đó thành số. Loại tính năng này có thể có sẵn trong tất cả các ngôn ngữ. Nếu bạn đang tìm kiếm một phương pháp toán học hơn thì điều này có thể giúp:
int n = 76543;
int r = 0;
while (n > 0) {
r *= 10;
r += n % 10;
n /= 10;
}
1111111119
`-1%~
Điều này nhận một đối số trên ngăn xếp và để lại kết quả trên ngăn xếp. Tôi đang khai thác tùy chọn "chương trình con" trong thông số kỹ thuật: nếu bạn nhấn mạnh vào một chức năng, đó là bốn ký tự nữa để lại trên ngăn xếp:
{`-1%~}:r
`-1%~
chứ không phải `-1$~
(và tôi đã tự do chỉnh sửa câu trả lời của bạn để nói như vậy).
Trong kịch bản shell:
echo "your number"|rev
Hy vọng điều này hữu ích :)
rev<<<yournumber
, ví dụ rev<<<132
(đối với bash / zsh, không phải trên mỗi POSIX)
rev
là đủ, câu hỏi không nói nó có được một hàm. Bạn có thể so sánh rev
với một hàm tích hợp, mặc dù nó không phải là một hàm.
Hơi muộn nhưng
⍎⌽⍞
Nếu bạn nhấn mạnh vào một chức năng
⍎∘⌽∘⍕
IntegerReverse
Điều này không cạnh tranh, bởi vì chức năng này chỉ được thêm vào trong phiên bản 10.3 tuần trước, nhưng để hoàn thiện tôi nghĩ tôi đã thêm tính năng duy nhất (tôi nghĩ?) Được tích hợp cho nhiệm vụ này.
Bạn có thể làm như sau trong Java. Lưu ý rằng điều này chuyển đổi thành Chuỗi và trở lại và không phải là một giải pháp toán học.
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 ký tự. num là tham số cho hàm:
num.toString().split('').reverse().join('')
(first(list(parse-integer(reverse(write-to-string '4279)))))
sẽ giúp bạn 9724.
(first(list
? parse-integer
đã trả về số.
#
+#(.*)(.)/\2#\1
#/
Về mặt kỹ thuật, điều này không được tính (rs đã được tạo ra vào đầu năm nay), nhưng tôi không thấy bất kỳ câu trả lời dựa trên regex nào khác và tôi nghĩ rằng điều này là gọn gàng.
#
Chèn một ký tự pound ở đầu chuỗi. Điều này được sử dụng như một điểm đánh dấu.
+#(.*)(.)/\2#\1
Liên tục thêm ký tự cuối cùng của chuỗi chính vào khu vực trước điểm đánh dấu cho đến khi không còn ký tự nào.
#/
Xóa điểm đánh dấu.