Write a function (or equivalent subprogram) to accept a single integer valued argument and return a (similarly typed) value found by reversing the order of the base-10 digits of the argument.
For example given 76543 return 34567
Write a function (or equivalent subprogram) to accept a single integer valued argument and return a (similarly typed) value found by reversing the order of the base-10 digits of the argument.
For example given 76543 return 34567
‮n
replace n
with your number
Your search -
- did not match any documents.
\$\endgroup\$
data:text/html,&%238238;egnahcxEkcatS olleH
\$\endgroup\$
Commented
Dec 1, 2013 at 12:20
Python
int(str(76543)[::-1])
EDIT:
Shorter solution as suggested by @gnibbler:
int(`76543`[::-1])
or, if above is unclear:
x=76543
int(`x`[::-1])
s[::-1]
is a lot faster than ''.join(reversed(s))
\$\endgroup\$
Universal (language agnostic/independent)
If you want to use only numbers (avoid converting the number to string) and don't want to use some specific library (to be universal for any language):
x = 76543 # or whatever is your number
y = 0
while x > 0:
y *= 10
y += ( x %10 )
x /= 10 # int division
This is python, but it could be done in any language, because it's just a math method.
mod
with %
, it's valid Python ;)
\$\endgroup\$
a - (n * int(a/n))
instead of a mod n
. Also, if you look here, the modulus operation is implemented differently in every language. (See the table on the right.)
\$\endgroup\$
+$n.flip
or:
$n.flip
for dynamically typed code.
Numbers got string methods due to language design.
".|.":y
Where y is your value.
|.&.":
"reverse under do" which is pretty much a literal translation of the task.
\$\endgroup\$
:se ri<CR>C<C-R>"
(int)strrev(123);
To do it short where N
is a constant:
strrev(N)
Complete runnable program:
N.@
Where N
is your number. Rules say "accept a single integer valued argument"; In Befunge you can only enter integers from 0 to 9.
Inspired by Kiril Kirov's answer above. I got curious about the mathematical properties of reversing a number, so I decided to investigate a bit.
Turns out if you plot the difference n - rev(n)
for natural numbers n
in some base r
, you get patterns like this ((n - rev(n)) / (r - 1)
, for r=10
, wrapped at r
columns, red denotes negative number):
This sequence could be generated as such (pseudocode):
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)
If you store these values in a list/array, then n - arr[n]
would get you the reversed form of n
. Now, to "mathematically golf" this, we'd ideally want a closed-form expression that gives us the n:th value in the sequence, so that we could have a closed-form expression for solving the entire task. Unfortunately, I haven't been able to find such an expression... but it looks like it should be possible. :(
So yeah, not so much a code-golf as a mathematical curiosity, but if there is a closed-form expression of the above sequence it might actually be useful in proper PL golf submissions.
f=read.reverse.show.(+0)
f=read.reverse.show.(+0)
?
\$\endgroup\$
(+0)
: Legit man! Though technically you don't need the .(+0)
at all, as f
would be more polymorphic than what the problem requires (it is allowed to return a 'similarly typed' output). I would shave off those 5 characters.
\$\endgroup\$
Commented
Aug 10, 2011 at 22:14
Scala - 33 Chars
def r(a:Int)=(a+"").reverse.toInt
r=lambda i:int(str(i)[::-1])
print(input()[::-1])
I consider some of the other Python examples to be cheating, or at least cheap, due to using hardcoded input and/or not fully satisfying the requirements.
x = 13456
x.to_s.reverse
.to_s.reverse.to_i
to comply with spec.
\$\endgroup\$
Commented
Dec 29, 2012 at 16:48
It is possible to convert a number a string, then reverse the string and then convert that string back to number. This kind of feature is probably available in all language. If you are looking for a more mathematical method then this might help:
int n = 76543;
int r = 0;
while (n > 0) {
r *= 10;
r += n % 10;
n /= 10;
}
1111111119
\$\endgroup\$
`-1%~
This takes an argument on the stack and leaves the result on the stack. I'm exploiting the "subprogram" option in the spec: if you insist on a function, that's four chars more leaving it on the stack:
{`-1%~}:r
`-1%~
rather than `-1$~
(and I've taken the liberty of editing your answer to say so).
\$\endgroup\$
Commented
Mar 7, 2012 at 19:47
In shell scripting :
echo "your number"|rev
Hope this was useful :)
rev<<<yournumber
, e.g. rev<<<132
(for bash/zsh, not per POSIX though)
\$\endgroup\$
rev
is enough, the question doesn't say it has to be a function. You could compare rev
to a built-in function, even though it's not one.
\$\endgroup\$
Kinda late but
⍎⌽⍞
If you insists on a function
⍎∘⌽∘⍕
IntegerReverse
This is not competing, because this function was only added in last week's 10.3 release, but for completeness I thought I'd add the only ever (I think?) built-in for this task.
$regsubex(12,/(.)/g,$mid(\A,-\n,1))
You could do the following in Java. Note that this converts to String and back and is not a mathematical solution.
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));
}
}
Depends on what you mean by short (javascript):
alert(String(123).split('').reverse().join('')),
alert((''+123).split('').reverse().join(''));
\$\endgroup\$
alert(prompt().split('').reverse().join(''));
?
\$\endgroup\$
Numbers and strings are interchangeable, so this is trivial
string.reverse(12345)
This one ACTUALLY takes an input, unlike some of the rest:
print`input()`[::-1]
Python btw.
43 characters. num as the parameter to the function:
num.toString().split('').reverse().join('')
r={"$it".reverse() as BigDecimal}
assert r(1234) == 4321
assert r(345678987654567898765) == 567898765456789876543
assert r(345346457.24654654) == 45645642.754643543
The p
flag is needed for this to work, included in the count.
Usage:
$ echo 76543 | perl -pE '$_=reverse'
p
flag is included in the count
\$\endgroup\$
#(->> % str reverse(apply str)read-string)
Example usage:
(#(->> % str reverse(apply str)read-string) 98321)
returns 12389
(first(list(parse-integer(reverse(write-to-string '4279)))))
will get you 9724.
(first(list
? parse-integer
already returns the number.
\$\endgroup\$
Commented
Jul 4, 2015 at 18:26
BaCon
PRINT REVERSE$(STR$(76543))
Replace 76543 with any number.