Biorąc pod uwagę nieujemną liczbę całkowitą n, należy wyliczyć wszystkie liczby palindromowe (w systemie dziesiętnym) od 0 do n (zakres włącznie). Liczba palindromowa pozostaje taka sama, gdy jej cyfry są odwrócone.
Pierwsze liczby palindromowe (w bazie 10) podano tutaj :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, ...
To jest golf golfowy, w którym nagrodą jest jak najmniej znaków. Liczby palindromiczne powinny być wyprowadzane po jednym w wierszu na standardowe wyjście. Program powinien czytać n z wiersza poleceń lub stdin.
n
należy do tego zakresu?Odpowiedzi:
Golfscript, 15 znaków
źródło
Perl 5.10, 29 (lub 39) znaków
Wymaga
say
włączenia tej funkcji. 29 znaków, jeśli uważasz to za darmowe, w przeciwnym razie 39 do dodaniause 5.010;
. Argument na temat STDIN.Perl, 35 znaków
używając starej konwencji perlgolfa, która
#!perl
nie jest liczona, ale są następujące flagi po niej.Perl, 36 znaków
Jeśli żaden z pozostałych nie kwalifikuje się.
źródło
$/
to separator rekordów wejściowych, domyślnie nowy wiersz. Jest tylko trochę krótszy niż dosłowny"\n"
.map{say if$_==reverse}0..<>
-E
zamiast tego-e
, otrzymaszsay
za darmo.Befunge
320313303 znaków(w tym znaczące znaki nowej linii i białe znaki)
Zastanawiam się, czy mógłbym to zmniejszyć, przekierowując ścieżki ...
Edycja: zmień górną część, aby uniknąć dodatkowej linii.
źródło
Perl 5.10 - 27 znaków
map{say if$_==reverse}0..<>
Czyta argument ze standardowego wejścia.
źródło
Ruby 1.9, 39 znaków
Wejście (nie może być zakończone znakiem nowej linii) przez stdin. Przykładowe wywołanie:
40 znaków dla wersji wykorzystującej argumenty wiersza poleceń:
źródło
p
zamiastputs
.irb(main):023:0> p (?0..gets).select{|i|i==i.reverse} 1 ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88", " 99"] => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88" , "99"]
Poniższy kod działa dla mniep ('0'..gets[0..-2]).select{|i|i==i.reverse}
Czy możesz wyjaśnić swój kod?p
iputs
nie są równoważne, w rzeczywistości użyciep
przerywa wyjście, ponieważ zapisuje każdy element w nowej linii, jeśli jest wywoływany z tablicą , podczas gdyp
po prostu wywołuje.to_s
.J , 20 znaków
źródło
,"0
.,.
działaPython,
5751 znakówStosowanie:
źródło
for i in range(input()):if`i`==`i`[::-1]:print i
print
i po prostu to zrobięif`i`==`i`[::-1]:i
(mówię to, ponieważ od tego zależy rozwiązanie Scala).Perl> 5,10: 25 znaków
źródło
APL (
2517)źródło
JavaScript
122108107 znaków ...Jestem pewien, że można więcej grać w golfa - jestem nowy w tym!
lub
źródło
var
są potrzebne, możesz po prostu sprawić, by wszystko było globalne. Nieprompt()
wymaga też ściśle parametrów.prompt()
zapisać jeden średnik:n=prompt(o=[]);
.var i=0
co możnavar
usunąć w swoimfor
.i++<n
porównuje sięi<n
przed dodaniem 1 doi
. W ten sposób działa aż doi=n
. Jeśli chcesz się zatrzymaći=n-1
, skorzystasz++i<n
zamiast tego.alert(o.join(" "))
musi byćalert(o.join("\n"))
zgodny ze specyfikacją. Dodaj 1 do liczby postaci, gdy to naprawisz.Perl - 43 znaki
To moja pierwsza próba gry w golfa kodowego, więc jestem prawie pewien, że profesjonalista Perl mógłby to zagrać w golfa.
źródło
Haskell 66 znaków
źródło
PHP
6458Zmieniono $ _GET ['n'] na $ argv [1] dla wprowadzania z wiersza poleceń.
źródło
Scala 59
źródło
readInt
go konkretną liczbą online.PHP,
595553 znakówStosowanie
Edycja: dzięki Thomas
źródło
echo "$i\n"
aby uzyskaćecho"$i\n"
. Dzięki temu zaoszczędzisz kilka znaków. Ponadto, jeśli chcesz być bezczelny, możesz zmienić\n
na `` i zapisać znak.C, 98 znaków
źródło
k (23 znaki)
źródło
Mathematica 61
źródło
Befunge, 97 (rozmiar siatki 37x4 = 148)
Uzyskaj lepszą odpowiedź Befunge na to pytanie. Jest to konkretnie Befunge-93; Prawdopodobnie mógłbym uczynić to jeszcze bardziej kompaktowym dzięki Befunge-98. Uwzględnię to w przyszłej edycji.
Ponieważ nie możesz operować na ciągach znaków w Befunge, najlepsze, co mogłem zrobić, to obliczyć cyfrę do tyłu każdej liczby (co mnie dziwi, że udało mi się bez niej
p
ig
) i porównać ją z liczbą oryginalną. Odwrócenie cyfr zajmuje większość kodu (w zasadzie całe trzecie i czwarte wiersze).Zauważ, że program w obecnej postaci drukuje liczby od wejścia do tyłu do 0. Jeśli to wielka sprawa, daj mi znać. (Wyzwanie mówi tylko o ich wyliczeniu, a nie w kolejności rosnącej).
źródło
\n
osobno, więc mają długość 94 bajtów. Nie sądzę, żeby twój „rozmiar siatki” miał jakieś szczególne znaczenie.05AB1E , 5 bajtów (niekonkurujące)
Język jest późniejszy od wyzwania i dlatego nie konkuruje . Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
LʒÂQ
ma 4 lata, ale wciąż nie konkuruje ..Brachylog (2), język postdates pytanie:
W formacie I / O podanym w pytaniu 8 bajtów
Wypróbuj online!
Dzięki nowoczesnym regułom we / wy PPCG, 4 bajty
Wypróbuj online!
Jest to funkcja, która generuje wszystkie dane wyjściowe, a nie pełny program, jak w poprzednim przykładzie, a więc nie jest zgodna ze specyfikacją, jak napisano, ale pomyślałem, że pokażę, jak wyglądałby program, gdyby pytanie zostało napisane zgodnie ze współczesnymi standardami I / O (które pozwalają na korzystanie z funkcji i generowanie danych przez generatory).
Wyjaśnienie
W przypadku pełnej wersji programu tworzymy zmienną tymczasową
A
do przechowywania danych wyjściowych, jawnego oznaczania ich etykietą (odbywa się to domyślnie dla głównego predykatu programu) i wykorzystujemy dobrze znanąẉ⊥
technikę wyprowadzania elementów generatora na standardowe wyjście.źródło
Pyton
źródło
Groovy, 83
źródło
Q (34 znaki)
Podaj n zamiast n + 1 jako argument dla tego rozwiązania Q.
źródło
P, 32
źródło
Q (33)
Prawdopodobnie fajniejszy sposób na zrobienie tego, ale mimo wszystko przykładowe użycie (wpisujesz n + 1, aby dostać się do n):
Sugestia tmartin, sprowadza się do 29:
Takie samo użycie.
źródło
Python, 106 znaków
stosowanie:
źródło
C # (
217214191 znaków)Wersja golfowa:
Czytelny:
Wyświetla palindromy w malejącej kolejności, korzystając z operatora n -> 0. (gdy n idzie do 0).
* Edytowana wersja zastępuje ... podczas gdy, oszczędzając 3 znaki, ale teraz musisz wprowadzić n + 1.
* edytowane: znalazłem lepszy sposób na odwrócenie łańcucha bez konwersji na tablicę:
Czytelny:
źródło
PHP 53
Czy 53 może być niższy? Cztery różne opcje:
Jeśli chcesz uzyskać funky ...
PHP 47
Musisz zignorować tekst błędu. Jednak liczby palindromów są nadal wyprowadzane do wiersza poleceń.
źródło
Pyth, 11
Przykład:
źródło