Мы все слышали о проблеме Fizz Buzz, но что происходит, когда вы пытаетесь применить ее с большим количеством факторов? Fizz Buzz Crackle Pop!
Соревнование
Напишите полную программу, которая принимает целочисленный ввод n , затем n кортежей, содержащих целое число и строку, затем другое целое число (> 1) k, как таковое:
n int1 str1 int2 str2 (...) intn strn k
Вы можете взять эту строку из командной строки или STDIN.
Тогда для всех целых чисел 1 к, если он делится на любой из int1 , int2 ... INTN , выход все соответствующие ул ами в порядке ввода, а затем перевод строки. Если это не так, просто выведите целое число, за которым следует новая строка.
Например, с вводом
3 2 Fizz 3 Buzz 5 Crackle 10
мы получаем
1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle
Но с вводом (обратите внимание на изменение порядка)
3 3 Buzz 2 Fizz 5 Crackle 10
мы получаем
1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle
Необязательный завершающий перевод новой строки приемлем.
Самый короткий код в байтах побеждает.
Редактирование:
Очевидно, я многое пропустил, извините.
- Входы из
консоли и STDIN, все остальное получает +5 байт (: c)где угодно - Полные программы, пожалуйста.
- Предположим, непустые строки для strs
- Нет гарантий уникальности целых
Пример программы на C ++ (ограничено 20, потому что я ленивый):
#include <iostream>
#include <string>
using namespace std;
int main() {
string names[20];
int mods[20], n, max;
cin >> max >> n;
for (int i=0; i<n; i++) {
cin >> mods[i] >> names[i];
}
for (int i=1; i<=max; i++) {
bool found = false;
for (int j=0; j<n; j++) {
if (i % mods[j] == 0) {
found = true;
cout << names[j];
}
}
if (!found)
cout << i;
cout << endl;
}
return 0;
}
Generalized Fizz Buzz
.Ответы:
05AB1E , 28 байтов
Попробуйте онлайн!
Или с другим форматом ввода:
05AB1E , 16 байтов
Попробуйте онлайн!
источник
JavaScript (ES6), 90 байт
Создает ведущий перевод строки.
Тест
Показать фрагмент кода
источник
Python 2 , 98 байт
Попробуйте онлайн!
источник
C ++, 194 байта
Ungolfed:
источник
x%atoi(a[i])
не может быть отрицательным, просто проверьтеx%atoi(a[i])<1
.p'\n'
:)PHP, 99 байт
Основываясь на ответе FizzBuzz от Primo :
õ
chr (245), немного перевернутый перевод строки.игнорирует первый аргумент; беги с
-nr
.источник
JavaScript (ES6),
10597 байтБерет на карту пар m (целое число, строка) и целое число k . Поставляется с завершающим символом новой строки.
Вот нерекурсивная версия (105 байт), но она не приводит к завершающему переводу строки.
Попробуйте онлайн!
источник
Java, 331 байт
Потому что Java.
Это полный класс, необходимый для этого. Однако для его запуска необходимо вызвать метод
x
в существующем экземпляреA
. Для тестирования ниже я предоставил исполняемый класс командной строки, который частично не задействован.источник
сложено , 85 байт
Попробуйте онлайн! В качестве альтернативы, 86 байтов:
источник
постоянный ток , 121 байт
Вводит 3 отдельные строки: первая строка содержит целое число
n
, вторая содержитint str
кортежи со строками, заключенными в квадратные скобки ([]
), а третья строка состоит из целого числаk
. Например,3 2 Fizz 3 Buzz 5 Crackle 10
может быть введен как:Попробуйте онлайн!
Или принимая входные данные в другом порядке:
постоянный ток , 118 байт
Это принимает входные данные в другом порядке, но в одной строке в формате
Например,
3 2 Fizz 3 Buzz 5 Crackle 10
будет введен как:Попробуйте онлайн!
источник