Wprowadzenie:
Mam wiele różnych szyfrów przechowywanych w dokumencie, który kiedyś skompilowałem jako dziecko, wybrałem kilka z tych, które moim zdaniem najlepiej nadawały się na wyzwania (niezbyt trywialne i niezbyt trudne) i przekształciłem je w wyzwania. Większość z nich wciąż znajduje się w piaskownicy i nie jestem jeszcze pewien, czy opublikuję je wszystkie, czy tylko kilka. Oto trzeci i najłatwiejszy (po wcześniejszym opublikowaniu szyfru komputerowego i szyfru Trifid ).
Za pomocą Szyfrowania zegara używamy następującego obrazu do szyfrowania tekstu:
Tak więc zdanie takie this is a clock cipher
brzmiałoby:
t h i s i s a c l o c k c i p h e r (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17
Wyzwanie:
Biorąc pod uwagę ciąg sentence_to_encipher
, szyfruj go jak opisano powyżej.
Zasady konkursu:
- Możesz założyć, że
sentence_to_encipher
będą zawierać tylko litery i spacje. - Możesz użyć zarówno wielkich, jak i wielkich liter (podaj, którego użyłeś w odpowiedzi).
- Nie wolno dodawać zer na jednocyfrowe zaszyfrowanych listów
b
za pośrednictwemj
, ale dwa zera00
są obowiązkowe dla przestrzeni. - Powinieneś użyć
:
jako separatora, a dodatkowe wiodące lub końcowe:
nie jest dozwolone. - Możesz używać małych
am
ipm
zamiast wielkich literAM
orazPM
, o ile jest to spójne.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Input: "this is a clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"
Input: "test"
Output: "19:4:18:19"
Input: "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"
Input: "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"
Input: "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"
[7, ":", 8, ":", "00", ":", 1, ":", 14, ":", 1]
dohi bob
, lub należy dołączyć wynik? Nawiasem mówiąc, zgrabny szyfr!['7', ':', '8', ':', '0', '0', ':', '1', ':', '1', '4', ':', '1']
).Odpowiedzi:
Python 2 ,
7472 bajtyWypróbuj online!
Pobiera dane wejściowe jak wszystkie małe litery
źródło
05AB1E ,
2221 bajtówWypróbuj online! lub jako pakiet testowy
Niektóre alternatywne rozwiązania 21- bajtowe:
źródło
ª
to się zmieniło :)Perl 6 , 47 bajtów
Wypróbuj online!
Anonimowy Bez względu na lambda, która pobiera ciąg obu przypadków i zwraca zaszyfrowany ciąg.
Wyjaśnienie:
źródło
Pyth, 25 bajtów
Spróbuj go online tutaj , lub sprawdzić wszystkie przypadki testowe od razu tutaj .
źródło
JavaScript (Node.js) , 72 bajty
Pobiera dane pisane małymi literami.
Wypróbuj online!
źródło
Java (JDK) , 95 bajtów
Wypróbuj online!
Kredyty
źródło
char
dovar
. :)C # (interaktywny kompilator Visual C #) , 70 bajtów
Pobiera dane wejściowe jako ciąg małych liter. Najpierw sprawdza, czy znak jest spacją, a jeśli tak, konwertuje go na
00
. Następnie sprawdza, czy znak jest literą A, i konwertuje go naAM
. Sprawdza ponownie Z i konwertuje go,PM
jeśli tak jest. Na koniec, jeśli znak przejdzie wszystkie testy, zostanie przekonwertowany na kolejność alfabetyczną-1.-2 bajty dzięki @dana
Wypróbuj online!
źródło
Rubinowy , 49 bajtów
Wypróbuj online!
Odpowiedź Portu Jo Kinga Perla . Pobiera dane wejściowe jako tablicę znaków, zwraca ciąg z AM / PM dużymi literami.
źródło
Czerwony ,
124121110109 bajtówWypróbuj online!
źródło
05AB1E , 20 bajtów
Znacznie zainspirowany @ Mr.Xcoder „s 22-byter w komentarzu istniejącego 05AB1E Odpowiedź @Emigna .
Pobiera dane wejściowe jako listę małych liter (byłoby 21 bajtów z wiodącym,
S
jeśli wezmę dane jako ciąg znaków).Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Tcl , 100 bajtów
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 98 bajtów
Pobiera dane wejściowe jako tablicę znaków (małymi literami). Wypróbuj online!
źródło
s=>string.Join(':',s.Select(c=>new[]{c-97+"","AM","PM","00"}["az ".IndexOf(c)+1]))
.Węgiel drzewny , 26 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera dane pisane małymi literami (można w prosty sposób zmienić na wielkie litery). Wyjaśnienie:
Ustaw znak tła na
:
. Wypełnia to luki między wartościami wyjściowymi utworzonymi przez właściwy ruch.Pętla nad każdą postacią, za każdym razem pozostawiając odstęp. (Pierwszy ruch nie działa, ponieważ płótno jest w tym momencie puste.)
Włącz znak i jeśli jest to spacja,
a
lubz
wyślij odpowiedni kod. Używam×0²
zamiast tego00
, ponieważ ten ostatni kosztowałby dwa bajty w dodatkowych separatorach.W przeciwnym razie wypisz zindeksowaną pozycję litery w małym alfabecie jako ciąg.
źródło
Galaretka , 24 bajty
Wypróbuj online!
źródło