Przeczytaj dwa ciągi z stdin
.
Dane wyjściowe, Yes
jeśli jeden ciąg jest obróconą wersją drugiego.
W przeciwnym razie wyjścieNo
Przypadki testowe
Wejście
CodeGolf GolfCode
Wynik
Yes
Wejście
stackexchange changestackex
Wynik
Yes
Wejście
stackexchange changestack
Wynik
No
Wejście
Hello World
Wynik
No
Stackexchange Stackchangeex
wróci?No
. Obrót jest przesunięciem, podobnie jak te przewijające się znaki LEDOdpowiedzi:
APL (28)
Pobiera dane wejściowe w dwóch wierszach.
Wyjaśnienie:
A←⍞
: przeczytaj wiersz danych wejściowych i zapisz go w A⌽∘A¨⍳⍴A
: Obróć A o x, dla każdego x w [1.. długości A]. Daje listę, tjestT stTe tTes Test
(⊂⍞)∊
: przeczytaj inny wiersz danych wejściowych i sprawdź, czy jest na tej liście.1+
: dodaj jeden do tego, dając 1, jeśli łańcuchy nie zostały obrócone i 2, jeśli były'No' 'Yes'[
...]
: Wybierz pierwszy lub drugi element z listy w'No' 'Yes'
zależności od tego, czy łańcuchy zostały obrócone, czy nie.źródło
Ruby
4941Edycja: zastąpiono gets.split przez $ *
źródło
$*
jest argumentem argv, gdy pytanie jest określonestdin
.Python, 70 bajtów
Testowanie ...
źródło
stdin
których to rozwiązanie nie.print ['No
Python 70 znaków
Dzięki gnibbler za trick trick.
źródło
nn nfn
, otrzymaszYes
, co jest złe.<>
,-
ponieważ spowoduje to również, że będą0
one równej długości.J, 47
źródło
Zgodnie ze specyfikacją (te same długości łańcucha):
Perl,
4243 znakiJeśli dozwolone są łańcuchy o różnych rozmiarach, rozwiązaniem byłoby:
Perl, 47 znaków
rbo
źródło
nn nfn
, otrzymaszYes
, co jest złe.Golfscript, 31
Najpierw ta długość kontroli, więc powinna działać zgodnie z oczekiwaniami.
źródło
:)
i=)
+1 za bardzo szczęśliwy kodJ, 57
Przykładowe użycie:
źródło
Windows PowerShell, 76
źródło
JavaScript, 51
JavaScript nie ma hosta kanonicznego, więc ta odpowiedź jest napisana jako funkcja dwóch argumentów. Wynik wzrośnie do 60, jeśli nie uwzględnimy funkcji JS 1.7 (zamykanie wyrażeń).
W powłoce SpiderMonkey byłoby to (dla wyniku 71):
źródło
=>
notacji funkcji;)Python,
6663Kolejne rozwiązanie w 69 znakach
źródło
print'YNeos'[a!=(2*a).replace(b,"")::2]
J, 84
źródło
JavaScript (120 znaków)
Wynik:
źródło
Rubinowy, 58 (62) znaków
To rozwiązanie zakłada, że dane wejściowe zawierają tylko znaki alfanumeryczne (w rzeczywistości wszystko, co nie ma specjalnego znaczenia w wyrażeniu regularnym, jest w porządku).
Rozwiązanie, które nie ma tego ograniczenia, ma 4 znaki dłużej
źródło
Python, 71
źródło
nn nfn
, otrzymaszYes
, co jest złe.PHP, 61
źródło
Ruby, 41
źródło
puts gets =~ /^(.+)(.*) \2\1$/ ?:Yes: :No
- podnosi go do 41 znaków.Haskell (
9896 znaków)źródło
Q (
5043 znaków)źródło
Scala 78
Szkoda, jeśli chodzi o sprawdzanie rozmiaru, bez tego liczba spada do 54
źródło
"""val b=readLine split " " print(b(0).sorted==b(1).sorted)""".length
daje 56bash 56
źródło
GolfScript, 25 bajtów
Jak to działa
źródło
CJam, 21 bajtów
Wypróbuj online!
źródło
0
/1
zamiastNo
/Yes
.Lua 115 znaków
źródło
Program C - 146
źródło
PHP, 82 znaki
źródło
perl, 123 znaki
źródło
Ruby,
3037Wersja, która drukuje „prawda” i „fałsz” zamiast „tak” i „nie”:
Oba działają z łańcuchami o różnej długości (w przeciwieństwie do starego)
źródło
Python 2, 86 znaków
źródło
Perl (tylko szybka poprawka)
Poprawka rozwiązania gumowych butów, ponieważ jestem nowym użytkownikiem, którego nie mogę jeszcze komentować, więc opublikuję nową odpowiedź.
Ponieważ wspomniana metoda wykorzystuje wyrażenie regularne zbudowane na podstawie danych wprowadzonych przez użytkownika, możliwe jest wykonanie małego wstrzyknięcia wyrażenia regularnego w następujący sposób:
Rozwiązaniem jest użycie \ Q (znanego również jako quotemeta):
Sam kod można dodatkowo skrócić za pomocą polecenia „powiedz”, ale pozostawia to zadanie czytelnikowi :)
źródło
print+(qw/yes no/)[
ciebie prawdopodobnie możesz napisać,print qw(yes no)[
który jest o dwa znaki krótszy.