Вам будет предоставлена строка, содержащая только буквы английского алфавита, как строчные, так и прописные (ASCII 65-90 и 97-122). Ваша задача - вывести Fizz-Buzzified версию String.
Как Fizz-Buzzify Строка?
Каждая буква с четным индексом в английском алфавите (алфавит должен быть 1-индексным :)
a->1,b->2,...,z->26
будет преобразована вfizz
строчные иFIZZ
заглавные (f -> fizz, F -> FIZZ
).Каждая буква с нечетным индексом в английском алфавите будет преобразована в
buzz
нижний регистр иBUZZ
в верхний регистр (e -> buzz, E -> BUZZ
).Давайте приведем пример, чтобы проиллюстрировать алгоритм, используя строку
CodeGolf
(пробелы добавлены для ясности):"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)
Если это более удобно для вашего языка, вы также можете оставить один пробел между группами (
fizz, buzz, FIZZ, BUZZ
). Следовательно, такой результатfizzBUZZbuzzbuzz
также может быть возвращен какfizz BUZZ buzz buzz
. Другие разделители не допускаются.
Тестовые случаи:
Вход -> Выход "яйцо" -> "buzzbuzzbuzz" "CodeGolf" -> "BUZZbuzzfizzbuzzBUZZbuzzfizzfizz" "Сброс" -> "FIZZbuzzbuzzbuzzfizz" "АТОМ" -> "БУЗЗФИЗЗБУЗЗБУЗЗ" "yOuArEgReAt" -> "buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz"
Можно использовать любой стандартный метод ввода / вывода .
Применяются стандартные лазейки .
Вам разрешено принимать данные только в родном типе String вашего языка. То же самое относится и к выходу.
Вы можете предположить, что ввод не будет пустым.
Самый короткий код в байтах на каждом языке выигрывает. Удачи и Fizz-Buzz!
Ответы:
Древесный уголь ,
2624 байтаПопробуйте онлайн! Первоначально вдохновленный @CarlosAlejo. Редактировать: Сохранение 2 байтов путем циклического перебора букв fizz / buzz вместо назначения временным. Объяснение:
источник
Ordinal(i)
вернул позициюi
char в исходной строке, но он возвращает его значение ASCII (код символа). Очень умное решение, мне еще нужно улучшить свои навыки работы с углем!C #, 92 байта
источник
x%2
непосредственно как логическое значение, не нуждаясь в<1
части? Если это так, вы можете сохранить некоторые байты таким образом.Python 3 ,
7369 байт4 байта благодаря овс.
Попробуйте онлайн!
источник
C (gcc) , 75 байтов
Попробуйте онлайн!
источник
Java (OpenJDK 8) ,
105100949190 байтПопробуйте онлайн!
Многое в гольф, очень байтов, поэтому Java!
Очень удачно сыграно @KevinCruijssen на 9 байтов!
источник
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Увы, это 105 символов длиной :( Если бы только они могли добавитьjoin
непосредственно в поток или интегрироватьtoList
, на самом деле, все разумное было бы хорошо.getBytes()
вместоtoCharArray()
на 3 байт короче:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
наgetBytes()
. :)JavaScript (ES6),
7977 байтКонтрольные примеры
Показать фрагмент кода
источник
C #, 97 байт
источник
c%2>1?c>96?"fizz":"buzz":...
Желе , 21 байт
Попробуйте онлайн!
источник
Pyth ,
2321 байтТестовый пакет .
источник
Простой английский ,
820632610 байтГ-н Xcoder предложил устранить ненужную ловушку ошибок, которая сэкономила 22 байта.
Ungolfed код:
Среда IDE на простом английском языке доступна по адресу github.com/Folds/english . IDE работает в Windows. Компилируется в 32-битный код x86.
источник
If the s is "", exit.
Древесный уголь ,
4036 байтПопробуйте онлайн!
Объяснение:
Альтернатива с тем же количеством байтов:
Попробуйте онлайн! ( Подробная версия )
источник
Count
илиOrdinal
соответственно вместо того,Find
чтобы сэкономить вам несколько байтов.if
считается одним утверждением, поэтому вам не нужно{}
s. Я также сохранил байт, переместив егоUppercase
внутрьTernary
: попробуйте онлайн!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
для 26 байтов. (Deverbosifier не нравится эта версия.)> <> , 68 байт
Попробуйте онлайн или посмотрите на рыбной площадке !
(Но посмотрите на ответ Аарона, который на 13 байт короче!)
Если вы не знакомы с> <>, есть рыба, которая плавает по коду в 2D, и края обертываются. Символы
>
,<
,^
иv
задать направление рыбы,/
и\
зеркала , которые отражают его, а?
значит «сделать следующую инструкцию , если верхняя вещь в стеке не равен нулю, в противном случае перепрыгивать через следующую инструкцию».В первой строке рыба принимает символ input (
i
); если это равно -1 для EOF, оно останавливается (:0(?;
); получает код мод 2 (:2%$
); и он помещает 1 или 0 в стек в зависимости от того, является ли код символа меньше или больше, чем код «^» ("^"(
). Следующие три строки перенаправляют рыбу на правильную строку шипения / жужжания, затем последняя строка печатает ее (по однойo
для каждого символа) и отправляет рыбу обратно в начало.источник
!
или?
после пробела просто пропускает пробел, но TIO ждет, пока не пропустится следующая не пробельная вещь ...!
должен пропустить пробелы AFAIK, но онлайн-переводчик дополняет свое кодовое пространство пробелами, что, вероятно, вы и видите> <> , 55 байт
На основании ответа не дерева .
Вместо представления 4 возможных выходных данных в коде я представляю только их заглавные версии и добавляю 32 к символьному коду, чтобы получить небольшие регистр-эквиваленты.
Попробуйте онлайн!
Модифицированный код для онлайн-интерпретатора , который дополняет свое кодовое пространство пустыми ячейками:
источник
Perl5 , 50 + 1 байт
Создает список из 128 элементов, который отображает символы ASCII в правильное кодовое слово.
источник
05AB1E , 22 байта
Попробуйте онлайн!
объяснение
Альтернативное 22-байтовое решение
источник
PHP , 67 байт
Попробуйте онлайн!
источник
F # ,
154153145 байтовспас
19 байт благодаря @Mr. XcoderПопробуйте онлайн!
источник
concat
и""
в конце строкиMathematica, 134 байта
источник
Java 8, 89 байт
Предполагает
import static java.util.stream.Collectors.*;
источник
q / kdb +, 48 байтов
Решение:
Примеры:
Объяснение:
Довольно просто, возьмите входную строку, приведите к значениям ASCII, создайте список из 1 или 0 в зависимости от того, является ли он нечетным или четным (подсказка A = 65 = нечетный), затем используйте этот список для индексации в список
fizz
иbuzz
. Приведите это к строке, а затем для случаев, когда ввод <91 (ниже, чем Z), мы применяемupper
функцию, чтобы получитьFIZZ
или aBUZZ
.д интерпретируется справа налево:
источник
mod
и2
?mod[x;2]
будто мы не хотели пробелов, но в итоге получается на 1 байт больше!Рубин , 61 + 1 = 62 байта
Использует
-p
флаг.Попробуйте онлайн!
источник
Swift 4 ,
144135 байтUn-golfed:
То, что я делаю, это зацикливание над каждым символом в строке. Я преобразовываю каждое в его значение ASCII, затем проверяю, является ли оно четным или нечетным, а затем проверяю, является ли оно прописным или строчным, и выводю совпадающее значение из цикла. Затем я объединяю все элементы полученного массива в одну строку и печатаю ее.
Это решение использует Swift 4, поэтому пока нет возможности легко протестировать его в Интернете.
Спасибо @ Mr.Xcoder за то, что сэкономили мне 9 байт!
источник
error: value of type 'String' has no member 'map'
, потому что строка не конвертируется автоматически в список во время выполнения.$0.characters.map{...}
func f(s:String){...}
, поэтому вы можете сохранить 9 байтов, используя следующий код, который используетprint
вместоreturn
: pastebin.com/06kiiGaJ . Если это не сработает, дайте мне знать.R
150123108 байтДолжен быть короче, используя ASCII?Это было короче. Смотрите историю изменений для старого ответа, который использовалиletters
.Проверяет каждую букву на (1), является ли она заглавной или нет (
>91
) и является ли онаfizz
или abuzz
.источник
Джава
источник
public static void main
), либо функцией. В настоящее время ваш фрагмент.