Отображать числа от одного до ста (в порядке возрастания), но число 2 не должно появляться нигде в последовательности. Так, например, числа два ( 2
) или двадцать три ( 23
) не должны быть в последовательности.
Вот пример выходных данных с символами новой строки, разделяющими числа:
1
3
4
5
6
7
8
9
10
11
13
14
15
16
17
18
19
30
31
33
34
35
36
37
38
39
40
41
43
44
45
46
47
48
49
50
51
53
54
55
56
57
58
59
60
61
63
64
65
66
67
68
69
70
71
73
74
75
76
77
78
79
80
81
83
84
85
86
87
88
89
90
91
93
94
95
96
97
98
99
100
code-golf
sequence
kolmogorov-complexity
Monolica
источник
источник
[code-golf]
. Вот список всех доступных тегов критериев выигрыша для дальнейшего использования.Ответы:
05AB1E , 6 байтов
Попробуйте онлайн!
объяснение
источник
Такси ,
239923912370178317731706 байт-8 байт за осознание того, что вместо того, чтобы навсегда оставить определенного пассажира в парке Санни Сайд, стоит сбросить их с моста через реку. Ах, какой это прекрасный город.
-21 байт за комментарий, который я тупо оставил.
-587 байт, просто изменив весь путь, по которому я пошел (очевидно, более короткий путь - по арифметике; целочисленное деление [17, 27, 37, 47, ...] на 9 дает последовательность, но вы должны пропустить Себе 20.)
-17 байт для понимания того, что любая строка в кавычках без пробела в конце концов не нуждается в кавычках (спасибо Джо Кинг!).
-67 байт для осознания того, что разрывы строк являются необязательными.
Попробуйте онлайн!
Этот в ближайшее время не выиграет мне ни одного соревнования по коду, но я решил попробовать такси esolang.
Такси - это esolang, в котором все программирование выполняется путем подбора и высадки пассажиров на различных остановках в вымышленном городе Таунсбург. Конечно, в вашем такси иногда заканчивается бензин, поэтому вам также нужно посещать заправки время от времени и платить, используя кредиты, которые вы получаете в качестве тарифа (в этом случае мне нужно только остановиться на бензин - в Go More - один раз за итерацию цикла!).
Я использовал некоторые приемы, которые немного уменьшают размер файла, такие как перефразирование направлений, таких
east 1st left, 2nd right
как ase 1 l 2 r
, удаление слова,the
где оно не является обязательным, и использование наименее сложного маршрута ко всем моим пунктам назначения (не обязательно кратчайшего пути).Я ненавижу это более короткое решение, чем то, которое я изначально придумал. Это решение здесь является более общим способом выполнения задачи, которая может начинаться и заканчиваться где угодно. Вот оно, во всей полноте.
2245 байт (путь более общий)
Попробуйте онлайн!
И если разрешено мега-мошенничество, этот будет намного короче, чем любой из двух последних.
456 байт (полностью изменяет)
Попробуйте онлайн!
источник
Python 2 , 39 байт
Попробуйте онлайн!
Использует арифметические операции только для генерации чисел без 2-х.
Значение
k
следует арифметической прогрессии17, 27, 37, 47, ...
, которая при делении на пол на 9 дает1,3,4,5,6,7,8,9,10,11,13,14,...
число, которое не заканчивается на 2. Чтобы пропустить 20–29, выходные данные увеличиваются на 10 после определенного порога.источник
JavaScript (ES6), 43 байта
Возвращает последовательность в виде строки, разделенной запятыми.
Попробуйте онлайн!
Зачем делать это так?
Мы могли бы выполнить итерации от1 до 100 и проверить каждое число с помощью
/2/.test(n)
, что является довольно лаконичным утверждением. Но в этом сценарии нам придется обрабатывать пустые записи чем-то вроде этого(/2/.test(n)?'':...)
, что добавляет еще пару байтов.Например, это будет работать для 45 байтов :
Или это будет работать на 44 байта , если допустима запятая:
В итоге (и до тех пор, пока не доказано обратное) оказывается, что короче сразу пропустить все значенияN , содержащие 2 .
комментарии
источник
R , 19 байт
Попробуйте онлайн!
источник
grep(2,1:100,inv=T)
для 19v=F
также и с тем, потому что, очевидно, я подумал про себя, я хочу ценности, а не индексы ... да!^[^2]*$
что не короче.Python 2 , 44 байта
Попробуйте онлайн!
источник
Perl 6 , 22 байта
Попробуйте онлайн!
Вероятно, есть лучший способ сделать блок кода, но я не смог найти наречие регулярного выражения, чтобы инвертировать совпадение
источник
PowerShell ,
2216 байтПопробуйте онлайн!
-6 байт благодаря маззи
Создает диапазон
1
до100
, а затем вытаскивает те объекты, где они делают-notmatch
номер2
. Запуск-notmatch
такого массива действует как фильтр в массиве. Каждый элемент остается в конвейере, а вывод неявным.источник
1..100-notmatch2
Haskell ,
483331 байтСпасибо @JonathanFrech за пятнадцать сохраненных байтов и @xnor за еще два! Я пропустил большой гольф и не понимал, что
main=print$
может быть опущен.Попробуйте онлайн!
Легко расширяется путем изменения
100
. Стригирует все числа и сохраняет только те без'2'
.источник
main=print$
не нужно. Вы проверяли свой код? Я не думаю, чтоelem'2'
это правильный синтаксис. Почемуmap
? Простоfilter(not.elem '2'.show)[1..100]
делает работу.notElem
дляnot.elem
, но еще короче естьall(/='2')
.Утилиты Bash + GNU, 16
Попробуйте онлайн!
источник
Japt , 7 байт
Попробуйте онлайн!
источник
Java 10, 67 байт
Попробуйте онлайн.
Объяснение:
источник
Сетчатка ,
1917 байтПопробуйте онлайн! Редактировать: благодаря @ovs сохранено 2 байта, хотя последняя строка теперь включает новую строку. Объяснение:
Вставьте 100 символов.
Замените каждый символ количеством символов до и включая этот символ, а также символ новой строки.
Удалить все записи, которые содержат
2
.источник
.
$.>`¶
на втором этапе?L$
избежать новой строки, так что я не понял, что смогу вернуться назад, спасибо.Stax , 6 байт
Запустите и отладьте его
Распакованный, размазанный и прокомментированный, это выглядит так.
Запустите этот
источник
Wolfram Language (Mathematica) , 42 байта
Попробуйте онлайн!
Арифметическая последовательность 1, 19/9, 29/9, 39/9, ... растет с правильной скоростью, при которой потолок пропускает все числа, заканчивающиеся в 2. Затем мы избавляемся от 20 до 29,
Drop
пингуя значения в индексах с 18 по 26.источник
Print
необходимым, но все равно, кого это волнует.\[LeftCeiling]
и\[RightCeiling]
считай как один байт :)Ceiling
команда.C (GCC) ,
6255 байт• 7 байт благодаря Джонатану Фреху
f(n){for(n=0;++n-101;n/10-2&&n%10-2&&printf("%d,",n));}
Зацикливает от 1 до 100 и печатает число, только если 2 не находится в единицах или десятках.
Попробуйте онлайн!
источник
Powershell, 19 байт
Этот скрипт показывает нулевое значение вместо «числа с 2 внутри» и полностью решает задачу «число 2 не должно появляться нигде в последовательности».
Выход:
Powerhsell (вывод не содержит нулевых значений), 24 байта
источник
sh + coreutils, 16 символов
Создает последовательность от 1 до 100 (включительно) и удаляет все строки, в которых есть «2».
источник
Z80Golf ,
4948 байтовПопробуйте онлайн!
Монтаж:
Сохранен один байт с
repeat_loop
скачкомисточник
Python 3 ,
53 51 50 4946 байтПопробуйте онлайн!
Не самый сильный язык для этой задачи, но я новичок в гольфе.
Спасибо комментаторам за советы!
источник
if
.[print(n)for n in range(1,101)if"2"not in str(n)]
работает.n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
'2'in str(n)or print(n)
короче охранника понимания.Tcl , 44 байта
Попробуйте онлайн!
Tcl , 47 байт
Попробуйте онлайн!
Tcl , 50 байт
Попробуйте онлайн!
источник
time {if [string f 2 [incr i]]==-1 {puts $i}} 100
- неудачный outgolf!regexp
:![regexp 2 [incr i]]
для -3 байтаКотлин , 32 байта
Попробуйте онлайн!
источник
Баш , 31 байт
Попробуйте онлайн!
Спасибо Digital Trauma за короткий цикл.
источник
echo $i
вместо printf? Или даже лучшеprintf %d\\n {1..100}|grep -v 2
?echo {1..100}|tr ' ' \\n|grep -v 2
sed /2/d
вместоgrep -v 2
.ORK , 1092 байта
Попробуйте онлайн!
O bjects R K оол. Выход - список чисел, разделенных пробелами.
Это переводит (приблизительно) в следующий псевдокод:
Как вы видете, все делается с использованием объектов, включая базовые математические и IO-функции (через встроенные классы математики и писцов). Только целые функции могут зацикливаться, что объясняет потребность в объекте с двумя функциями для выполнения работы.
источник
MathGolf ,
76 байтовПопробуйте онлайн!
объяснение
источник
C (лязг) , 56 байтов
Попробуйте онлайн!
источник
PHP 7.1, 40 байт
печатает числа, разделенные подчеркиванием Запустите
-nr
или попробуйте онлайн .источник
preg_filter()
основании одного интересно. (Я никогда не использовал эту функцию 🤫.) Это один будет короче сpreg_grep()
:<?=join(_,preg_grep("/2/",range(1,100),1));
.Красный , 44 байта
Попробуйте онлайн!
Использует
unless
вместоif not
, потому что почему бы и нет? :)источник
брейкфук , 176 байт
Попробуйте онлайн!
Короче определенно возможно. Это генерирует числа
1,3,4,5,6,7,8,9
и0,1,3,4,5,6,7,8,9
. Сначала он выводит каждое число в первом списке, затем выводит каждую комбинацию первого и второго списка, а затем выводит только100
.Объяснение:
источник
SimpleTemplate , 51 байт
Это было весело! И это вызов, когда мой язык может преуспеть.
Циклически перебирает все значения от 1 до 100, выводя те, у которых нет 2, через пробел.
Вы можете попробовать это на http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99
Ungolfed:
{@/}
Используется для закрытия{@for ...}
и{@if ...}
, но не является обязательным.При компиляции в PHP он добавляет необходимое закрытие.
Если вам интересно, код для игры в гольф приводит к следующему PHP-коду:
Где
$FN['array_flat']
определяется вне этого кода.источник