Otrzymasz ciąg znaków, który zawiera tylko litery alfabetu angielskiego, zarówno małe, jak i wielkie (ASCII 65-90 i 97-122). Twoim zadaniem jest wyprowadzenie wersji łańcucha Fizz-Buzzified.
Jak Fizz-Buzzify a String?
Każda litera z parzystym indeksem w alfabecie angielskim (alfabet musi być indeksowany 1:)
a->1,b->2,...,z->26
zostanie zamieniona,fizz
jeśli jest pisana małymi literami iFIZZ
jeśli jest pisana wielkimi literami (f -> fizz, F -> FIZZ
).Każda litera z nieparzystym indeksem w alfabecie angielskim zostanie zamieniona,
buzz
jeśli jest pisana małymi literami iBUZZ
jeśli jest pisana wielkimi literami (e -> buzz, E -> BUZZ
).Zróbmy przykład, aby zilustrować algorytm, używając łańcucha
CodeGolf
(spacje dodane dla zachowania przejrzystości):"C o d e G o l f" -> "BUZZ buzz fizz buzz BUZZ buzz fizz fizz" ^ ^ ^ ^ ^ ^ ^ ^ 1 1 0 1 1 1 0 0 (1 is odd index, 0 is even index)
Jeśli jest to wygodniejsze dla twojego języka, możesz również zostawić pojedyncze spacje między grupami (
fizz, buzz, FIZZ, BUZZ
). Dlatego wynik podobnyfizzBUZZbuzzbuzz
można również zwrócić jakofizz BUZZ buzz buzz
. Inne separatory są niedozwolone.
Przypadki testowe:
Wejście -> Wyjście „jajko” -> „buzzbuzzbuzz” „CodeGolf” -> „BUZZbuzzfizzbuzzBUZZbuzzfizzfizz” „Resetuj” -> „FIZZbuzzbuzzbuzzfizz” „ATOM” -> „BUZZFIZZBUZZBUZZ” „yOuArEgReAt” -> „buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz”
Dozwolone jest tylko wprowadzanie danych wejściowych w rodzimym typie ciągów języka. To samo dotyczy wyników.
Możesz założyć, że dane wejściowe nie będą puste.
Najkrótszy kod w bajtach w każdym języku wygrywa. Powodzenia i Fizz-Buzz!
Odpowiedzi:
Węgiel drzewny ,
2624 bajtówWypróbuj online! Pierwotnie zainspirowany @CarlosAlejo. Edycja: Zapisano 2 bajty, zapętlając litery fizz / buzz zamiast przypisywać je do wartości tymczasowej. Wyjaśnienie:
źródło
Ordinal(i)
zwrócił pozycjęi
znaku w oryginalnym ciągu znaków, ale zwraca wartość ASCII (kod znaku). Bardzo sprytne rozwiązanie, wciąż muszę znacznie poprawić swoje umiejętności w zakresie węgla drzewnego!C #, 92 bajty
źródło
x%2
bezpośrednio jako wartość logiczną, bez potrzeby<1
części? Jeśli tak, możesz w ten sposób zapisać niektóre bajty.Python 3 ,
7369 bajtów4 bajty dzięki ovs.
Wypróbuj online!
źródło
C (gcc) , 75 bajtów
Wypróbuj online!
źródło
Java (OpenJDK 8) ,
105100949190 bajtówWypróbuj online!
Dużo golfowych, bardzo bajtów, więc Java!
Bardzo gra w golfa przez @KevinCruijssen o 9 bajtów!
źródło
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Niestety, ma 105 znaków :( Gdyby tylko mogli dodaćjoin
bezpośrednio do strumienia lub zintegrować, atoList
właściwie wszystko, co rozsądne, byłoby dobre.getBytes()
z niegotoCharArray()
to dodatkowe 3 bajty krótsze:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
nagetBytes()
. :)JavaScript (ES6),
7977 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
C #, 97 bajtów
źródło
c%2>1?c>96?"fizz":"buzz":...
Galaretka , 21 bajtów
Wypróbuj online!
źródło
Pyth ,
2321 bajtówZestaw testowy .
źródło
Zwykły angielski ,
820632610 bajtówPan Xcoder zasugerował wyeliminowanie niepotrzebnej pułapki błędów, która pozwoliła zaoszczędzić 22 bajty.
Nieskluczony kod:
Zwykły angielski IDE jest dostępny na stronie github.com/Folds/english . IDE działa w systemie Windows. Kompiluje się do 32-bitowego kodu x86.
źródło
If the s is "", exit.
Węgiel drzewny ,
4036 bajtówWypróbuj online!
Wyjaśnienie:
Alternatywa z taką samą liczbą bajtów:
Wypróbuj online! ( Pełna wersja )
źródło
Count
lubOrdinal
odpowiednio zamiast,Find
aby zaoszczędzić trochę bajtów.if
liczy się jako jedna instrukcja, więc nie potrzebujesz{}
s. Zapisałem również bajt, przesuwającUppercase
wewnątrzTernary
: Wypróbuj online!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
dla 26 bajtów. (Deverbosifier nie lubi tej wersji.)> <> , 68 bajtów
Wypróbuj online lub obejrzyj na placu zabaw dla ryb !
(Ale spójrz na odpowiedź Aarona, która jest o 13 bajtów krótsza!)
Jeśli nie znasz>>>, ryba przepływa przez kod w 2D, a brzegi zawijają się. Symbole
>
,<
,^
iv
ustawić kierunek ryb,/
i\
są lustra, które odbijają je, a?
oznacza „zrobić następną instrukcję jeśli górna rzeczą na stosie jest niezerowe, inaczej przeskoczyć do następnej instrukcji”.W pierwszym wierszu ryba przyjmuje znak input (
i
); jeśli wynosi -1 dla EOF, zatrzymuje się (:0(?;
); pobiera charcode mod 2 (:2%$
); i wypycha 1 lub 0 na stosie w zależności od tego, czy kod znaków jest mniejszy czy większy niż kod znaku „^” ("^"(
). Następne trzy wiersze przekierowują rybę na właściwy ciąg fizz / buzz, a następnie drukuje ją w ostatnim wierszu (jedeno
dla każdego znaku) i odsyła rybę z powrotem na początek.źródło
!
lub?
po nim spacja po prostu pomija to miejsce, ale TIO czeka, aż kolejna rzecz niebędąca spacją pominie ...!
powinien pomijać spacje AFAIK, ale interpreter online wypełnia swoją przestrzeń kodową spacjami, co prawdopodobnie jest tym, co widzisz> <> , 55 bajtów
Oparty nie na drzewie za odpowiedź .
Zamiast reprezentować 4 możliwe dane wyjściowe w kodzie, reprezentuję tylko ich wielkie litery i dodam 32 do kodu znakowego, aby uzyskać ekwiwalenty małych liter.
Wypróbuj online!
Zmodyfikowany kod interpretera online , który wypełnia przestrzeń kodową pustymi komórkami:
źródło
Perl5 , 50 + 1 bajtów
Tworzy listę 128 pozycji, która odwzorowuje znaki ASCII na właściwe słowo kodowe.
źródło
05AB1E , 22 bajty
Wypróbuj online!
Wyjaśnienie
Alternatywne rozwiązanie 22-bajtowe
źródło
PHP , 67 bajtów
Wypróbuj online!
źródło
F # ,
154153145 bajtówzapisano
19 bajtów dzięki @Mr. XcoderWypróbuj online!
źródło
concat
i""
w ostatniej liniiMathematica, 134 bajty
źródło
Java 8, 89 bajtów
Zakłada
import static java.util.stream.Collectors.*;
źródło
q / kdb +, 48 bajtów
Rozwiązanie:
Przykłady:
Wyjaśnienie:
Dość prosto, weź ciąg wejściowy, rzutuj na wartości ASCII, utwórz listę 1 lub 0 w zależności od tego, czy jest nieparzysta, czy parzysta (wskazówka A = 65 = nieparzysta), a następnie użyj tej listy, aby zindeksować do listy
fizz
ibuzz
. Rzuć to na ciąg, a następnie w przypadkach, gdy dane wejściowe wynoszą <91 (mniej niż Z), stosujemyupper
funkcję, aby uzyskać aFIZZ
lub aBUZZ
.q jest interpretowane od prawej do lewej:
źródło
mod
i2
?mod[x;2]
, jakbyśmy nie chcieli żadnych białych znaków - ale kończy się to o 1 bajt więcej!Rubin , 61 + 1 = 62 bajty
Używa
-p
flagi.Wypróbuj online!
źródło
Swift 4 ,
144135 bajtówBez golfa:
To, co robię, polega na zapętlaniu każdego znaku w ciągu. Konwertuję każdy na jego wartość ASCII, następnie sprawdzam, czy jest parzysty czy nieparzysty, a następnie sprawdzam, czy jest to duża czy mała litera, i wypisuję pasującą wartość z pętli. Następnie łączę wszystkie elementy wynikowej tablicy w jeden ciąg i drukuję go.
To rozwiązanie wykorzystuje Swift 4, więc nie ma jeszcze możliwości łatwego przetestowania go online.
Dzięki @ Mr.Xcoder za uratowanie mnie 9 bajtów!
źródło
error: value of type 'String' has no member 'map'
, ponieważ ciąg nie jest automatycznie konwertowany na listę w środowisku wykonawczym.$0.characters.map{...}
func f(s:String){...}
dlatego możesz zapisać 9 bajtów, używając następującego kodu, który używaprint
zamiastreturn
: pastebin.com/06kiiGaJ . Jeśli to nie zadziała, daj mi znać.R,
150123108 bajtówMusi być krótszy przy użyciu ASCII?To było krótsze. Zobacz historię edycji starej odpowiedzi, która była używanaletters
.Sprawdza każdą literę pod kątem (1), czy jest
>91
to duża,fizz
czy nie ( ) i czy jest to a czybuzz
.źródło
Jawa
źródło
public static void main
) lub funkcją. Obecnie twój jest fragmentem kodu.