Napisz program, który odczytuje ze standardowego wejścia dwie liczby całkowite, każda nowa linia jest zakończona, zwane dalej „liczbą” i „radiksem” oraz:
- Drukuje każdą stałą wiadomość chcesz jeśli liczba jest palindrom w tym radix (np
true
,t
,1
) - Drukuje każdą inną ustaloną wiadomość, którą chcesz, jeśli liczba nie jest palindrom w tym radix (np
false
,f
,0
, itd.) - Te komunikaty muszą być takie same dla każdego biegu, ale nie ma żadnych zasad dotyczących tego, czym muszą być (co jest najlepsze do gry w golfa).
- Możesz założyć, że dane wejściowe są prawidłowe, dwie dodatnie liczby całkowite. „liczba” nie przekroczy
2147483647
, „podstawa” nie przekroczy32767
. - Nie możesz korzystać z zasobów zewnętrznych, ale możesz użyć dowolnej funkcji matematycznej domyślnie dostępnej w Twoim języku.
Uwaga: podstawa to tylko podstawa liczby.
Przykładowe przebiegi:
16
10
false
16
3
true
16
20
true
121
10
true
5
5
false
12346
12345
true
16781313
64
true
16781313
16
true
code-golf
decision-problem
base-conversion
palindrome
durron597
źródło
źródło
Odpowiedzi:
Podwójna cecha J (23 znaków) i K (19)
Oba języki są bardzo podobne, zarówno ogólnie, jak i w tym konkretnym golfie. Oto J:
,~1
- Dołącz liczbę 1 do siebie, tworząc tablicę1 1
.1!:1
- Odczytaj z klawiatury dwa ciągi znaków (1!:1
ma to odczytać i1
jest uchwytem pliku / numerem dla wprowadzania danych z klawiatury).".
- Konwertuj każdy ciąg na liczbę.#.^:_1~/
-F~/ x,y
znaczy znaleźćy F x
. NaszF
jest#.^:_1
, który wykonuje rozszerzenie bazy.(-:|.)
- Czy argument match (-:
) jest odwrotny (|.
)?1
za tak,0
za nie.A oto K:
0::'``
- Wczytaj (0::
) ciąg dla każdej ('
) linii z konsoli (`
jest to uchwyt pliku do tego)..:'
- Convert (.:
) każdy ('
) ciąg na liczbę._vs/|
- Odwróć parę liczb, tak aby podstawa znajdowała się przed liczbą, a następnie wstaw (/
)_vs
wektorową funkcję rozszerzenia („wektor ze skalara”) między nimi.a~|a:
- Przypisz wynikowe rozszerzenie doa
, a następnie sprawdź, czya
pasuje (~
) do jego odwrotnej (|
). Ponownie1
za tak,0
za nie.źródło
GolfScript, 10 znaków
To jest łatwe dla GolfScript, jeśli zrobimy to w prosty sposób. Dane wyjściowe to
0
/1
for false / true.źródło
APL (20)
Wyjścia
0
lub1
np .:Wyjaśnienie:
⎕{
...}⎕
: przeczytaj dwie liczby, przekaż je do funkcji.⍵
jest pierwszą liczbą i⍺
jest drugą liczbą.⌊1+⍺⍟⍵
:floor(1+⍺ log ⍵)
, liczba cyfr niezbędnych do przedstawienia⍵
w bazie⍺
.⍺/⍨
: podstawa dla każdej cyfry, więc⍺
powielona przez właśnie obliczoną liczbę.⍵⊤⍨
: reprezentują⍵
w podanej bazie (używając liczb, więc działa dla wszystkich wartości⍺
).≡∘⌽⍨
: sprawdź, czy wynik jest równy jego odwrotności.źródło
Perl,
82777369 bajtówLiczby wejściowe są oczekiwane jako linie wejściowe STDIN, a wynik jest zapisywany jako
1
lub0
, pierwsza oznacza, że pierwsza liczba jest palindromem w jej reprezentacji danej bazy.Edycja 1: Użycie
$=
zapisuje niektóre bajty z powodu wewnętrznej konwersji na int.Edycja 2: Operator smartmatch
~~
porównuje bezpośrednio elementy tablicy, dlatego konwersja na ciąg nie jest konieczna.Edycja 3: Optymalizacja poprzez usunięcie niepotrzebnej zmiennej.
65 bajtów : Jeśli pusty ciąg znaków jest dozwolony jako wyjście
false
, ostatnie cztery bajty można usunąć.Wersja bez golfa
Algorytm przechowuje cyfry przekonwertowanej liczby w tablicy
@a
. Następnie reprezentacja ciągu tej tablicy jest porównywana z tablicą w odwrotnej kolejności. Spacje oddzielają cyfry.źródło
$=
pozwól mi zmierzyćint
krok ... I postawić pytanie,anything you want
aby nic nie mogło być tym, czego chcesz ;-)$=
podano również jako wskazówkę w tej odpowiedzi na pytanie „Wskazówki dotyczące gry w golfa w Perlu” . Zwrot0
kosztuje 6 dodatkowych bajtów, ale miałem wrażenie, że ustalona wiadomość nie jest pusta.silence
JavaScript 87
n
argument to liczba,b
argument to podstawa.źródło
Sage, 45 lat
Działa w interaktywnym pytaniu
Drukuje,
True
gdy jest palindromem, drukujeFalse
inaczejźródło
Perl
54 5662Być testowanym:
da:
To wyjście
1
dlatrue
znalezienia palindromu i nic, jeśli inaczej.Ungolfing:
Nota :
$_
jest bieżącym buforem linii i jest pusty na początku.$=
jest zmienną zarezerwowaną , pierwotnie używaną do drukowania linii, jest to licznik linii. Tak więc ta zmienna jest liczbą całkowitą , wszelkie obliczenia na tej podstawie skutkowałyby liczbą całkowitą obciętą, jak gdybyint()
użyto.$-
był używany dla zabawy, żeby nie używać tradycyjnych liter ... (trochę więcej zaciemnienia) ...źródło
Mathematica
7743IntegerDigits[n,b]
reprezentuje n jako listę cyfr w bazie b. Każda cyfra podstawy b jest wyrażana dziesiętnie.Na przykład 16781313 nie jest palindromem w podstawie 17:
Jest to jednak palindrom w bazie 16:
Jeśli wprowadzono uporządkowane pary w powyższych przykładach,
wróciłby
źródło
Integer
Haskell (80 znaków)
Zadzwoń za pomocą
pali $number $radix
. To prawda, że gdy liczba jest palindromem, Fałsz, jeśli nie.źródło
Ruby - 76 znaków
źródło
Perl 6 , 27 bajtów (22 bez standardowego wejścia / wyjścia)
Wypróbuj online!
Perl6, król czytelnych golfów (golves?) (A także niektórych nie tak czytelnych).
Funkcja Perla 6 (nie standardowego / standardowego), 22 bajty
Wypróbuj online!
źródło
base
w mojej odpowiedzi jest to, żebase
obsługuje tylko do bazy 36, a pytanie wymaga wsparcia dla podstawników do32767
dg - 97 bajtów
Wypróbowanie dg :
Wyjaśniono:
źródło
C
140132źródło
puts(m)
by działało, prawda?printf("%d",m);
będzie o 8 znaków krótszy.Haskell - 59
Kilka zmian w odpowiedzi Maxa Rieda.
źródło
Pyth , 4 bajty
Wypróbuj tutaj lub sprawdź pakiet testowy (zajmuje to około 10-15 sekund).
źródło
dc, 39 bajtów
Długość jest oczywiście palindromem (
33₁₂
).Liczba i podstawa powinny znajdować się na górze stosu (w bieżącej bazie liczb); liczba musi wynosić co najmniej 0, a podstawa musi wynosić co najmniej 2. Wyjście jest,
t
jeśli jest to palindrom, af
jeśli nie. Ponieważ nie jest to określone w wyzwaniu, założyłem, że liczby nigdy nie mają zer wiodących (więc żadna liczba kończąca się0
nie może być palindromem).Wyjaśnienie
Jako pełny program:
źródło
LaTeX, 165 bajtów
Przykład na desmos.com
k
, podstawa, jest regulowanym wejściemJeśli
f(x)=0
,x
to palindrom w baziek
.źródło
Perl 6 , 34 bajtów
-4 bajty dzięki PhilH
Wypróbuj online!
źródło
05AB1E ,
43 bajtyWypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
C (gcc) , 79 bajtów
Wypróbuj online!
Zniszczony
Na podstawie faktu, że w przypadku palindromu odwrotność liczby musi być równa samej liczbie.
Załóżmy, że masz trzycyfrową liczbę ABC w jakiejś bazie. Pomnożenie go przez zasadę zawsze spowoduje ABC0, a podzielenie go przez zasadę w AB z C jako resztą. Aby odwrócić liczbę, wybieramy cyfrę najbardziej po prawej stronie od numeru oryginalnego i wstawiamy ją po prawej stronie na odwróconym numerze. Aby zrobić miejsce dla tej cyfry, wcześniej mnożymy rewers przez bazę.
Gruntownie:
źródło