Biorąc pod uwagę ciąg znaków, który zawiera tylko małe litery, należy go zakodować za pomocą szyfru alfabetu.
Aby zakodować za pomocą szyfru alfabetu (skorzystam z przykładu hello
):
- Najpierw przekonwertuj każdą literę ciągu na liczbę w zależności od jej pozycji w alfabecie (
a
=1
,b
=2
itd.) Przykład:8
5
12
12
15
- Wpisz każdą cyfrę do dwóch znaków za pomocą
0
s. Przykład:08
05
12
12
15
- Przystąpić. Przykład:
0805121215
Przypadki testowe
helloworld -> 08051212152315181204
codegolf -> 0315040507151206
alphabetcipher -> 0112160801020520030916080518
johncena -> 1015081403051401
Pamiętaj, to jest kodowanie w golfa , więc wygrywa kod z najmniejszą liczbą bajtów.
Odpowiedzi:
05AB1E ,
116 bajtówKod:
Wyjaśnienie:
Najpierw konwertujemy ciąg na ich wartości ASCII.
codegolf
stanie się:Aby przejść do indeksów alfabetu, odejmij
96
:Aby wstawić zera, dodaj
100
do każdego elementu i usuń pierwszy znak z każdej int. W powyższym przykładzie+100
byłoby:A usunięcie pierwszego znaku każdego z nich doprowadziłoby do:
Możemy połączyć oba kroki powyżej (
-96
i i+100
) do just+4
. Dla kodu:Wypróbuj online!
źródło
¦
ponownie?Python 2, 42 bajty
Przetestuj na Ideone .
źródło
lambda s:''.join(`ord(x)+4`[1:]for x in s)
Pyth,
1110 bajtówSpróbuj! Mój pierwszy raz w Pyth.
Odpowiednik w języku Python:
źródło
C,
5543 bajtówideone
źródło
printf("%02d",*c++-96);}
jest krótszy i ważny, jeśli się nie mylę.Python, 46 bajtów
Całkiem proste. Wypróbuj na repl.it!
źródło
Galaretka ,
97 bajtówTryItOnline
W jaki sposób?
źródło
O+4DḊ€FṾ€
dla tej samej liczby, być może golfaO+4Ṿ€Ḋ€
oszczędza 2 bajty.Haskell,
czterdzieści cztery 3028 bajtówZastosowanie
+4
podejścia z odpowiedzi Adnana pozwala zaoszczędzić 14 bajtów.Wypróbuj na Ideone. Stosowanie:
Dwa bajty wyłączone dzięki xnor . Stara wersja:
źródło
Perl, 29 bajtów
28 bajtów kodu +
-n
flaga.Biegnij z :
źródło
JavaScript (ES6),
5249 bajtówRekurencja okazała się o 3 bajty krótsza niż
.replace
:parseInt(s,36)
jest nieco dłuższy dla każdego podejścia, ponieważ musisz zmienić4
na91
:źródło
Japt, 10 bajtów
Prawdopodobnie nie jest krótszy niż ten ...
Przetestuj online!
Wyjaśnienie
źródło
Java 7,60 bajtów
źródło
char[]
zamiast niejString
.MATL,
1211 bajtów1 bajt zapisany dzięki @Luis
Wypróbuj online
źródło
Sześciokąt , 33 bajty
Wypróbuj online!
Mm .. dostałem kilka braków w Hexagonie, więc umieściłem dzisiejszą datę.
Rozszerzony formularz z datą zastąpioną przez brak operacji
10
i przenieś wskaźnik pamięci gdzieś ...$
pomija lustro i,
czyta bajt.<
gałęzie:-1
który nie jest dodatni), idzie do@
i kończy program.95
(zmniejszaa
), a następnie drukujemyresult / 10
(dzielenie liczb całkowitych)result % 10
i zapętlamy ponownie.źródło
Vim, 60 klawiszy
Prawie rozwiązanie oparte całkowicie regex. Jak zwykle użycie rejestru eval powoduje, że jest on nieprzyzwoicie długi.
źródło
PHP, 58 bajtów
źródło
$argn
47 bajtów TIO .PowerShell v2 +, 44 bajty
Pobiera dane wejściowe
$args[0]
, rzuca je jakochar
tablicę, przekazuje do pętli. Przy każdej iteracji bierzemy bieżący$_
modulo znaku32
, który domyślnie rzutuje jako wartość ASCII. Dogodnie ;-), to ustawia się taka = 1, b = 2
, itd. To jest podawane do-f
operatora ormat, działającego na sznurku"{0:D2}"
, który określa dwucyfrowe minimum (tj. Wstawia początkowe zero, jeśli jest wymagane). Te ciągi cyfr są zamknięte w pareny,-join
połączone razem w jeden ciąg i pozostawione w potoku. Wyjście za pośrednictwem niejawnegoWrite-Output
następuje po zakończeniu programu.źródło
Perl, 24 bajty
Obejmuje +1 dla
-p
Podaj dane na STDIN:
encode.pl
źródło
4+ord$&
zamiast5+ord$&
;-)exec rev
print
ma 5 bajtów,<>
jest jeszcze 2, więc zastanawiałem się, jaki był wbudowany 1-bajt do odwrócenia, o którym nie słyszałem!DASH , 27 bajtów
Przykładowe użycie:
Wyjaśnienie
źródło
Partia,
256239237 bajtówPobiera dane wejściowe na STDIN.
źródło
IBM PC DOS 8088 Assembly,
332827 bajtówZmontowany plik binarny:
Niezmontowane:
Samodzielny plik wykonywalny DOS dla komputera PC. Wprowadź ciąg znaków z wiersza poleceń, dane wyjściowe do konsoli.
I / O:
źródło
MATL , 11 bajtów
Wypróbuj online!
źródło
Rubin,
5346 bajtów->s{s.chars.map{|c|(c.ord-96).to_s.rjust(2,?0)}.join}
->s{s.chars.map{|c|(c.ord+4).to_s[1..2]}.join}
źródło
R,
7151 bajtówZaoszczędź 20 bajtów dzięki Billywob. Pobiera dane wejściowe ze standardowego wejścia i wyjścia na standardowe wyjście.
Przykłady:
źródło
utf8toInt(scan(,"))-96
zamiast całego dopasowania. Nie sądzę jednak, że istnieje lepszy sposób radzenia sobie z wypełnieniem.formatC
wcześniej, ale okazało się, że potrzebuję o jeden bajt więcej niż obecne podejście.Właściwie 10 bajtów
Wykorzystanie zgrabnego algorytmu w odpowiedzi 05AB1E Adnana . Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!
Ungolfing
źródło
Groovy, 51 bajtów
źródło
Labirynt, 40 bajtów
źródło
Befunge-98, 19 bajtów
źródło
Groovy - 31 bajtów
Groovy konwersja rozwiązania NumberKnot w java:
Przykład tutaj, używając różnych opcji:
http://ideone.com/vd0dTX
źródło
Pyke, 7 bajtów
Wypróbuj tutaj!
źródło
C #, 54 bajty
źródło