Wyzwanie
Dla każdego znaku ciągu oprócz ostatniego, wykonaj następujące czynności:
Wyjście bieżącego znaku.
Następnie losowo wyprowadza z poniższej listy losową liczbę razy od 1 do 5 (włącznie):
- Obecna postać
- Następny znak ciągu
- Wersja postaci, w której aktualnie jesteś
- Wersja rozdzielająca następnego znaku ciągu.
Przypadki testowe
String
-> SSSTSStrTrIiinIIngn
, . , . , . Hello world!
-> ,,, .. , ,, .... , , .. .. . HHH HHEeelLlLllooO wwOworOOrrrRllDd!!D
Programming Puzzles and Code Golf
-> PrPPrRrOooooogggRgGraAraaaMMMmmmimMIiininGGgG PPPPuZzZZzZzzZzllLLEEeEsEsssS a aANnNddD C COCoooOOdeDe E GGGoOllFFf
Uwagi
- Musisz zastosować wersję przełącznika znaku tylko wtedy, gdy znak jest częścią alfabetu (AZ i az).
- Twoja losowa funkcja nie musi być jednolita, ale nadal musi mieć szansę na zwrócenie dowolnego elementu z podanej listy.
- Możesz używać dowolnego standardowego formatu we / wy.
- Możesz założyć, że długość danych wejściowych jest większa lub równa dwa.
- Możesz założyć, że dane wejściowe składają się tylko ze znaków ASCII.
- Tytuł nie jest przypadkiem testowym (jest niezamierzony, jeśli jest to prawidłowy przypadek testowy).
- „Switchcase” oznacza, że zamieniasz znak na małe litery, jeśli jest to wielkie litery, i zmienisz go na wielkie litery, jeśli jest małe.
String
produkujeSSSTSStrTrIiinIIngn
[S]SSTSS [t]rT, [r]I, [i]inII, [n]gn
gdzie postacie między blokami są pierwszymi punktorami („ Wyjście bieżącego znaku ”), a pozostałe postacie są 1-5 razy losowo jedną z czterech opcji do wyboru postać. Ale zgadzam się, że bardziej precyzyjne wyjaśnienia byłyby odpowiednie. Poza przypadkiem testowym nie było szczególnie jasne, że musimy wybrać losowy wybór 1-5 razy. Zamiast wybierać losowy wybór powtarzany 1-5 razy (jak obecnie robi odpowiedź Gai).Odpowiedzi:
Gaia , 25 bajtów
Wypróbuj online!
Dzięki Kevin Cruijssen za wskazanie 2 błędów!
Zauważ, że dzieje się tak,
4ṛ
ponieważṛ
jest zaimplementowany dla liczby całkowitej takiejz
jak pythonrandom.randint(1,z+1)
, która zwraca liczbę całkowitąN
taką, że1<=N<=z+1
.źródło
SSSTSStrTrIiinIIngn
([SSSTSS, trT, rI, iinII, ngn]
) wydaje się to odzwierciedlać i obecnie nie jest możliwym wyjściem w twoim programie (tak myślę).5ṛ
może wynikać6
z jakiegoś powodu Wypróbuj online ? PS: Czy nie ma liczb całkowitych do listy dystansowej, czy też dla Gai dla pętli dystansowej?for
konstrukcja typu, ale jestem prawie pewien, żeₓ
nie jest to nawet udokumentowane na stronie wiki.APL (dzaima / APL) , 23 bajty
Anonimowa ukryta funkcja prefiksu.
Wypróbuj online!
2(
…)/
Zastosuj następującą ukrytą funkcję dla każdej pary znaków:-
switchcase⍤
z,
konkatenacji pary,,
przygotuj konkatenację pary do tego{
… Wybierz z}⊇
tego następujące elementy:?5
liczba losowa w zakresie 1… 54⍴⍨
tyle czwórek?
losowe wskaźniki dla nich∊
ε nlist (spłaszczyć)źródło
Perl 6 , 60 bajtów
Wypróbuj online!
Mała / duża część jest dość denerwująca.
źródło
$/
i$0
połączyć i użyć.lc
na tym ciągu, a następnie utworzyć kopię tego ciągu i użyć.uc
i połączyć te dwa razem? Nie jestem pewien, czy to w ogóle możliwe, czy krótszy niż dotychczasowe$/.lc,$/.uc,$0.lc,$0.uc
, ale oznaczałoby to byłoby użyć$/
,$0
,.lc
, i.uc
po każdej z nich.(.lc~.uc for $0~$/).comb
jest dłuższy. Perl 6 naprawdę chce rozróżniać ciągi i listy, więc"abc"[0] eq "abc"
(udaje, że jest listą pojedynczego elementu).{.lc,|.uc}($/,|$0)
dla -5 bajtów, i po prostu użyj listy dopasowań{.lc,|.uc}(@$/)
dla -8 bajtów. tio.run/…Galaretka , 12 bajtów
Wypróbuj online!
źródło
Bash , 121 bajtów
-20 bajtów dzięki Nahuelowi
-9 bajtów dzięki roblogic
Wypróbuj online!
Oryginalna odpowiedź
Bash , 150 bajtów
Zrobiłem bardzo mało uderzeń w golfa i próbuję poprawić swój bash, więc wszelkie komentarze są mile widziane.
Wypróbuj online!
Kod jest prostą pętlą przez znaki ustawiające bieżący
c
i następnyn
znak, a następnie tworząc tablicę 4 możliwości, powtarzając jedną z nich, tak aby było dokładnie 5. Następnie przetasowujemy tę tablicę, a następnie wybieramy n elementów z niej, gdzie n jest losowe między 1 i 5.źródło
printf %s "$c"
do
idone
można je zastąpić dokumentem nieudokumentowanym{
i}
Python 2 , 107 bajtów
Wypróbuj online!
źródło
05AB1E ,
1817 bajtówZainspirowany odpowiedzią Gaia @Giuseppe .
-1 bajt dzięki @Shaggy .
Wypróbuj online 10 razy lub sprawdź wszystkie przypadki testowe 10 razy .
Wyjaśnienie:
źródło
INè
czy mógłbyś cokolwiek uratować, popychając pierwszą postaćy
?¨vNUy5LΩFy¹X>è«D.š«Ω?
t
,T
albos
do wejścia"String"
w programie, natomiast powinno zawsze zaczynać się odS
.Węgiel drzewny , 27 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Pętla nad wszystkimi indeksami ciągu wejściowego.
Z wyjątkiem pierwszego indeksu, zapętlaj losową liczbę od 1 do 5 włącznie ...
... wyodrębnij poprzednie i następne znaki z ciągu, weź małe i duże wersje i wybierz losowy znak z czterech.
Wydrukuj znak przy bieżącym indeksie.
źródło
perl 5 (
-p
), 77 bajtówTIO
źródło
$&
zamiast$1
ichop
+-l
zamiasts/.$//
Japt
-P
, 14 bajtówSpróbuj
źródło
Python 3 , 167 bajtów
Wypróbuj online!
źródło
Galaretka , 14 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C (GCC)
175162 bajtów-12 bajtów z LambdaBeta
Wypróbuj online
źródło
0
pierwszej linii.S
jako parametr i dodając zmienne do listy argumentów: Wypróbuj online!0
, co sprawiło, że nie warto mieć#define
anymorePowerShell ,
1541051039587 bajtów-67 bajtów dzięki mazzy, którego nie można zatrzymać
Wypróbuj online!
Nie jest to fantastyczna metoda, ale działa.Teraz jest całkiem dobrze. Pobiera dane wejściowe przez rozpryskiwanieźródło
Scala 2.12.8, 214 bajtów
Wersja golfowa:
Gra w golfa z nowymi liniami i wcięciami:
Nie golfowany:
źródło
a :: b :: Nil
się zmienića::b::Nil
? Sam dlaa :+
,a:+()
luba.:+()
może działaća::b::Nil
powoduje błąd kompilacji.+:
jest metodą zdefiniowaną na liście, więc może zaoszczędzić miejsce, pozbywając się zewnętrznych parens?Perl 5
-n
, 61 bajtówWypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) ,
236213209 bajtówWypróbuj online!
źródło
char b=a[0]
->var b=a[0]
, dodatkowe miejsce w deklaracjid
w pętli forZapytanie T-SQL, 286 bajtów
Wypróbuj online niestety wersja online zawsze pokazuje ten sam wynik dla tego samego varchara, w przeciwieństwie do MS SQL Server Management Studio
źródło
C # (interaktywny kompilator Visual C #) , 156 bajtów
Wypróbuj online!
źródło
Japt
-P
,4316 bajtówTeraz znacznie skrócony!
Spróbuj
źródło
ä
opisie podano trzy argumenty, przy czym ostatni z nichx+y
. Ale jak widać tutaj , zwraca tylko 1. Czy to błąd?C (gcc) ,
110109 bajtówWypróbuj online!
-1 dzięki pułapkowi cat
Liczba drukowanych znaków (na znak wejściowy) nie jest jednolicie losowa:
źródło
Zsh,
113107 bajtówZ dużą pomocą
man zshexpn
iman zshparam
. Wypróbuj online!źródło