Wyzwanie
Wyzwanie polega na zaszyfrowaniu danego ciągu przy użyciu reguł określonych poniżej. Ciąg będzie zawierał tylko małe litery , cyfry i / lub spacje .
Odpowiednik postaci
Teraz najpierw musisz wiedzieć, jak znaleźć „ekwiwalent” każdej postaci.
Jeśli postać jest spółgłoską, jest to sposób na znalezienie jej odpowiednika:
1) List all the consonants in alphabetical order
b c d f g h j k l m n p q r s t v w x y z
2) Get the position of the consonant you are finding the equivalent of.
3) The equivalent is the consonant at that position when starting from the end.
np .: „h” i „t” są sobie równoważne, ponieważ „h”, „t” znajdują się odpowiednio na 6. pozycji od początku i końca.
Ta sama procedura jest stosowana do znalezienia odpowiednika samogłosek / cyfr. Wymieniasz wszystkie samogłoski lub cyfry (zaczynając od 0) w kolejności i znajdujesz odpowiednik.
Poniżej znajduje się lista ekwiwalentów wszystkich znaków:
b <-> z
c <-> y
d <-> x
f <-> w
g <-> v
h <-> t
j <-> s
k <-> r
l <-> q
m <-> p
n <-> n
a <-> u
e <-> o
i <-> i
0 <-> 9
1 <-> 8
2 <-> 7
3 <-> 6
4 <-> 5
Zasady szyfrowania
1) Zaczynasz poruszać się od lewej i idziesz w prawo.
2) Jeżeli znak jest spółgłoską / cyfrą, to pobierany jest jej odpowiednik, a jeśli jest to spacja, to jest brana spacja.
3) Jeśli postać jest samogłoską, bierzesz jej ekwiwalent i zaczynasz poruszać się w przeciwnym kierunku. Na przykład, jeśli poruszasz się w prawo i napotykasz samogłoskę, zaszyfruj tę postać, a następnie przejdź do najbardziej niezszyfrowanej prawej strony i zacznij szyfrować w lewą stronę i odwrotnie.
4) Nie powinieneś brać pod uwagę postaci w tej samej pozycji dwa razy. Kroki należy wykonywać, aż wszystkie znaki na wejściu zostaną pokryte.
5) Całkowita liczba znaków na wejściu (w tym spacje) powinna być równa całkowitej liczbie znaków na wyjściu.
Należy pamiętać, że zaszyfrowane znaki pojawiają się na wyjściu w kolejności, w jakiej zostały zaszyfrowane.
Teraz pozwól mi zaszyfrować ciąg dla ciebie.
String = "tre d1go3t is"
Moving left to right
"t" -> "h"
"r" -> "k"
"e" -> "o"
Vowel encountered. Now moving right to left.
"s" -> "j"
"i" -> "i"
Vowel encountered. Now moving left to right.
" " -> " "
"d" -> "x"
"1" -> "8"
"g" -> "v"
"o" -> "e"
Vowel encountered. Now moving right to left.
" " -> " "
"t" -> "h"
"3" -> "6"
Output -> "hkoji x8ve h6"
Przykłady
"flyspy" -> "wqcjmc"
"hero" -> "toek"
"heroic" -> "toyike"
"ae" -> "uo"
"abe" -> "uoz"
"the space" -> "htoo jmuy"
"a d1g13t" -> "uh68v8x "
"we xi12" -> "fo78i d"
"this is a code" -> "htioj ixej uy "
Możesz także użyć wielkich liter zamiast małych liter.
Punktacja
To jest kod-golf , więc wygrywa najkrótszy kod!
źródło
Odpowiedzi:
JavaScript (Node.js) ,
173...166156...124123 bajtów-28 bajtów Dzięki Arnauld
Wypróbuj online!
W pierwszej iteracji
String
zostanie zmieniona naArray
, a kolejne iteracje będą nadal używaneArray
. Voilà!Podejście oryginalne (166 bajtów):
źródło
&
nie działał dla niektórych liczb, ale&&
działał. Dzięki.q=="0"|+q
jest faktycznie o 1 bajt krótszy niżq>" "&&1/q
.05AB1E , 22 bajty
Wypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
žhžMžN)UvćXJXíJ‡D?žMsåiR
to było to, co myślałem o poprawie, ale nie mogęXJXiJ
wystarczająco ograniczyć.DJsíJ
którym też nie był zbyt skuteczny.C, 196 bajtów
Wypróbuj online!
źródło
J , 132 bajty
Wypróbuj online!
Tym razem pełny czasownik jawny.
Wyjaśnienie:
c=.(u:97+i.26)
tworzy listę azv=.'aeiou'
tworzy listę samogłosek-.
usuwa samogłoski z listy literd=.u:48+i.10
tworzy listę cyfrg=.;"0|.
czasownik narzędziowy do tworzenia listy zapakowanych par symboli zastępczycha=.''
lista do przechowywania wynikuwhile.*#y do.a=.a,{.y rplc(g c),(g d),g v
podczas gdy długość listy wynosi> 0, weź symbol, zastąp go i dołącz do wynikuy=.|.^:({:a e.v)}.y
upuść jeden symbol z początku listy, a jeśli symbolem jest samogłoska, odwróć listęend.
kończywhile
pętlęa
zwraca wynikźródło
Czysty ,
221206198190186178 bajtówWypróbuj online!
źródło
Siatkówka , 78 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Zamień każdą postać na jej odpowiednik.
Powtarzaj, dopóki samogłoska pozostaje.
Wypisz tekst do samogłoski.
Usuń tekst aż do samogłoski.
Odwróć pozostały tekst. Gdy nie ma już samogłosek, jest to domyślnie wyprowadzane, jednak na potrzeby przypadków testowych nagłówek wypisuje tekst na końcu każdej linii.
źródło
Stax , 24 bajty
Uruchom
Oto reprezentacja ascii tego samego programu.
Najpierw tłumaczy każdą klasę znaków, a następnie rozpoczyna pętlę while. W pętli wyświetla następny znak i warunkowo odwraca resztę łańcucha, jeśli napotkana zostanie samogłoska.
źródło