Показывать числа без 2-х

22

Отображать числа от одного до ста (в порядке возрастания), но число 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
Monolica
источник
7
Я полагаю, что критерий выигрыша - это правильный код-гольф?
Луис Фелипе Де Иисус Муньос
4
Наш сайт не работает так же, как другие сайты из сети Stack Exchange. Что касается принятых ответов, примите во внимание этот комментарий Джонатана Аллана . И, пожалуйста, добавьте критерий выигрыша.
Арно
1
Могу ли я предложить использовать Песочницу в будущем, чтобы получить отзывы о ваших проблемах перед публикацией?
Джо Кинг,
1
@Monolica Если победит самый короткий ответ, вам понадобится тег [code-golf]. Вот список всех доступных тегов критериев выигрыша для дальнейшего использования.
Кевин Круйссен
4
@ user202729 Произвольное ограничение нежелательно, не запрещено.
Джонатан Фрех

Ответы:

26

Такси , 2399 2391 2370 1783 1773 1706 байт

-8 байт за осознание того, что вместо того, чтобы навсегда оставить определенного пассажира в парке Санни Сайд, стоит сбросить их с моста через реку. Ах, какой это прекрасный город.

-21 байт за комментарий, который я тупо оставил.

-587 байт, просто изменив весь путь, по которому я пошел (очевидно, более короткий путь - по арифметике; целочисленное деление [17, 27, 37, 47, ...] на 9 дает последовательность, но вы должны пропустить Себе 20.)

-17 байт для понимания того, что любая строка в кавычках без пробела в конце концов не нуждается в кавычках (спасибо Джо Кинг!).

-67 байт для осознания того, что разрывы строк являются необязательными.

17 is waiting at Starchild Numerology.Go to Starchild Numerology:w 1 l 2 r 1 l 1 l 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.[B]Pickup a passenger going to Cyclone.Pickup a passenger going to Divide and Conquer.9 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:e 1 l 2 r 3 r 2 r 1 r.Pickup a passenger going to Trunkers.Go to Trunkers:e 1 r 3 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 1 r 1 r.Pickup a passenger going to Post Office.\n is waiting at Writer's Depot.Go to Writer's Depot:n 5 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.Go to Cyclone:s 1 r 1 l 2 r.Pickup a passenger going to Addition Alley.Pickup a passenger going to Equal's Corner.177 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan C if no one is waiting.Pickup a passenger going to Sunny Skies Park.100 is waiting at Starchild Numerology.Switch to plan D.[C]10 is waiting at Starchild Numerology.[D]Go to Starchild Numerology:n 1 r.Pickup a passenger going to Addition Alley.Go to Sunny Skies Park:w 1 r.Go to Addition Alley:n 1 r 1 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l.Pickup a passenger going to Cyclone.Pickup a passenger going to Equal's Corner.917 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan E if no one is waiting.Switch to plan F.[E]Go to Go More:n 1 l.Go to Cyclone:w 1 r.Switch to plan B.[F]

Попробуйте онлайн!

Этот в ближайшее время не выиграет мне ни одного соревнования по коду, но я решил попробовать такси esolang.

Такси - это esolang, в котором все программирование выполняется путем подбора и высадки пассажиров на различных остановках в вымышленном городе Таунсбург. Конечно, в вашем такси иногда заканчивается бензин, поэтому вам также нужно посещать заправки время от времени и платить, используя кредиты, которые вы получаете в качестве тарифа (в этом случае мне нужно только остановиться на бензин - в Go More - один раз за итерацию цикла!).

Я использовал некоторые приемы, которые немного уменьшают размер файла, такие как перефразирование направлений, таких east 1st left, 2nd rightкак as e 1 l 2 r, удаление слова, theгде оно не является обязательным, и использование наименее сложного маршрута ко всем моим пунктам назначения (не обязательно кратчайшего пути).

Я ненавижу это более короткое решение, чем то, которое я изначально придумал. Это решение здесь является более общим способом выполнения задачи, которая может начинаться и заканчиваться где угодно. Вот оно, во всей полноте.

2245 байт (путь более общий)

1 is waiting at Starchild Numerology.Go to Starchild Numerology:w 1 l 2 r 1 l 1 l 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.[B]Pickup a passenger going to Addition Alley.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:n 2 r 2 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 5 l 2 l.Pickup a passenger going to Chop Suey.Go to Zoom Zoom:n.0 is waiting at Writer's Depot.Go to Writer's Depot:w.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 3 r 1 l 1 r.Go to Chop Suey:e 1 r 1 l 1 r.[C]Switch to plan E if no one is waiting.Pickup a passenger going to Crime Lab.2 is waiting at Writer's Depot.Go to Writer's Depot:n 1 l 3 l.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 3 r 2 r.Switch to plan D if no one is waiting.Pickup a passenger going to KonKat's.Go to Narrow Path Park:n 5 l.Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 2 l.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan C.[D]Go to Chop Suey:n 5 r 1 l.Switch to plan C.[E]Go to Narrow Path Park:n 1 l 1 r 1 l.Pickup a passenger going to Crime Lab.0 is waiting at Writer's Depot.Go to Writer's Depot:w 1 l 1 r 2 l.1 is waiting at Starchild Numerology.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 3 r 2 r.Switch to plan F if no one is waiting.Pickup a passenger going to Riverview Bridge.Go to Cyclone:n 4 l 2 l.Pickup a passenger going to Post Office.Go to Riverview Bridge:n 2 r.\n is waiting at Writer's Depot.Go to Writer's Depot:w 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.Go to Starchild Numerology:s 1 r 1 l 1 l 2 l.Switch to plan G.[F]Go to Cyclone:s 1 r 1 l 2 r.Pickup a passenger going to Riverview Bridge.Go to Riverview Bridge:n 2 r.Go to Starchild Numerology:w 2 l 3 l 2 r.[G]Pickup a passenger going to Addition Alley.Go to Addition Alley:e 1 l 2 r 3 r 1 r.Pickup a passenger going to Magic Eight.101 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.Pickup a passenger going to Magic Eight.Go to Magic Eight:w 1 r 2 r 1 r.Switch to plan H if no one is waiting.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 2 r.Switch to plan B.[H]

Попробуйте онлайн!

И если разрешено мега-мошенничество, этот будет намного короче, чем любой из двух последних.

456 байт (полностью изменяет)

1\n3\n4\n5\n6\n7\n8\n9\n10\n11\n13\n14\n15\n16\n17\n18\n19\n30\n31\n33\n34\n35\n36\n37\n38\n39\n40\n41\n43\n44\n45\n46\n47\n48\n49\n50\n51\n53\n54\n55\n56\n57\n58\n59\n60\n61\n63\n64\n65\n66\n67\n68\n69\n70\n71\n73\n74\n75\n76\n77\n78\n79\n80\n81\n83\n84\n85\n86\n87\n88\n89\n90\n91\n93\n94\n95\n96\n97\n98\n99\n100 is waiting at Writer's Depot.Go to Writer's Depot:w 1 l 2 r 1 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.

Попробуйте онлайн!

JosiahRyanW
источник
Эта цитата полезна, спасибо. Тем не менее, я не согласен с тем, что «не нужно ходить в Такси». Разрешено ли выходить с ошибкой? Я не могу найти хороший набор общих правил по этому вопросу.
JosiahRyanW
Да, обычно STDERR игнорируется. Соответствующая мета
Джо Кинг,
Некоторые из моих ответов могут извлечь из этого пользу.
JosiahRyanW
22

Python 2 , 39 байт

k=7
exec"k+=10;print(k>177)*10+k/9;"*81

Попробуйте онлайн!

Использует арифметические операции только для генерации чисел без 2-х.

Значение kследует арифметической прогрессии 17, 27, 37, 47, ..., которая при делении на пол на 9 дает 1,3,4,5,6,7,8,9,10,11,13,14,...число, которое не заканчивается на 2. Чтобы пропустить 20–29, выходные данные увеличиваются на 10 после определенного порога.

XNOR
источник
14

JavaScript (ES6), 43 байта

Возвращает последовательность в виде строки, разделенной запятыми.

f=(n=98)=>n?f(n-=n-27?n%10?1:2:11)+[,n+3]:1

Попробуйте онлайн!

Зачем делать это так?

Мы могли бы выполнить итерации от 1 до 100 и проверить каждое число с помощью /2/.test(n), что является довольно лаконичным утверждением. Но в этом сценарии нам придется обрабатывать пустые записи чем-то вроде этого (/2/.test(n)?'':...), что добавляет еще пару байтов.

Например, это будет работать для 45 байтов :

f=(n=1)=>n>99?n:(/2/.test(n)?'':[n,,])+f(n+1)

Или это будет работать на 44 байта , если допустима запятая:

f=(n=100)=>n?f(n-1)+(/2/.test(n)?'':[,n]):''

В итоге (и до тех пор, пока не доказано обратное) оказывается, что короче сразу пропустить все значения N , содержащие 2 .

комментарии

f =                 // f is a recursive function taking:
(n = 98) =>         // n = counter, initialized to 98
  n ?               // if n is not equal to 0:
    f(              //   prepend the result of a recursive call:
      n -=          //     update n:
        n - 27 ?    //       if n is not equal to 27:
          n % 10 ?  //         if n is not a multiple of 10:
            1       //           subtract 1 from n
          :         //         else:
            2       //           subtract 2 from n
        :           //       else (n = 27):
          11        //         subtract 11 from n (--> 16)
    ) +             //   end of recursive call
    [, n + 3]       //   append a comma, followed by n + 3; notice that this is the value
                    //   of n *after* it was updated for the recursive call; at the first
                    //   iteration, we have: n = 98 -> updated to 97 -> n + 3 = 100
  :                 // else (n = 0):
    1               //   output the first term '1' and stop recursion
Arnauld
источник
1
Это так круто!
Emigna
1
41 байт, используя ваш трюк, если бы мы могли иметь запятую.
Оливер
12

R , 19 байт

grep(2,1:100,inv=T)

Попробуйте онлайн!

НГМ
источник
grep(2,1:100,inv=T)для 19
J.Doe
2
Ха - это было то, что я попробовал сначала, но v=Fтакже и с тем, потому что, очевидно, я подумал про себя, я хочу ценности, а не индексы ... да!
НГМ
Инвертирование самого регулярного выражения на байт короче (в данном случае).
НГМ
Не работает, все равно пропускает 2 секунды. Тебе нужно ^[^2]*$что не короче.
J.Doe
4
Что, мы должны проверить наши ответы сейчас?
НГМ
10

Perl 6 , 22 байта

put grep {!/2/},1..100

Попробуйте онлайн!

Вероятно, есть лучший способ сделать блок кода, но я не смог найти наречие регулярного выражения, чтобы инвертировать совпадение

Джо Кинг
источник
уберите скобки вокруг цифр. В противном случае это нормально.
Монолика
@Monolica Fixed
Джо Кинг,
1
@Monolica Кажется немного странным, что вы выделили мой ответ как недопустимый для печати в виде списка, где так много других ответов. С другой стороны, это не стоит мне никаких байтов, так что
Джо Кинг,
7

PowerShell , 22 16 байт

1..100-notmatch2

Попробуйте онлайн!

-6 байт благодаря маззи

Создает диапазон 1до 100, а затем вытаскивает те объекты, где они делают -notmatchномер 2. Запуск -notmatchтакого массива действует как фильтр в массиве. Каждый элемент остается в конвейере, а вывод неявным.

AdmBorkBork
источник
? 1..100-notmatch2
Маззи
@mazzy Конечно, почему я не подумал об этом? Благодарность!
AdmBorkBork
6

Haskell , 48 33 31 байт

Спасибо @JonathanFrech за пятнадцать сохраненных байтов и @xnor за еще два! Я пропустил большой гольф и не понимал, что main=print$может быть опущен.

filter(all(/='2').show)[1..100]

Попробуйте онлайн!

Легко расширяется путем изменения 100. Стригирует все числа и сохраняет только те без '2'.

Хулдрасет на'Барья
источник
Увидеть это ; main=print$не нужно. Вы проверяли свой код? Я не думаю, что elem'2'это правильный синтаксис. Почему map? Просто filter(not.elem '2'.show)[1..100]делает работу.
Джонатан Фрех
@JonathanFrech Wow, пропустил это. : / Понятия не имею, куда ушло это пространство! Это там в ТИО ...
Хулдраесет на'Барья
2
Haskell есть notElemдля not.elem, но еще короче есть all(/='2').
xnor
5

Java 10, 67 байт

v->{for(int i=0;++i<101;)if(i%10!=2&i/10!=2)System.out.println(i);}

Попробуйте онлайн.

Объяснение:

v->{                           // Method with empty unused parameter and no return-type
  for(int i=0;++i<101;)        //  Loop `i` in the range (0, 101)
    if(i%10!=2                 //   If `i` modulo-10 is not 2
       &i/10!=2)               //   And `i` integer-divided by 10 is not 2 either
      System.out.println(i);}  //    Print `i` with a trailing newline
Кевин Круйссен
источник
5

Сетчатка , 19 17 байт


100*
.
$.>`¶
A`2

Попробуйте онлайн! Редактировать: благодаря @ovs сохранено 2 байта, хотя последняя строка теперь включает новую строку. Объяснение:


100*

Вставьте 100 символов.

.
$.>`¶

Замените каждый символ количеством символов до и включая этот символ, а также символ новой строки.

A`2

Удалить все записи, которые содержат 2.

Нил
источник
Работает ли . $.>`¶на втором этапе?
овс
@ovs У меня раньше было что-то более сложное, и я переключился, чтобы L$избежать новой строки, так что я не понял, что смогу вернуться назад, спасибо.
Нил
4

Wolfram Language (Mathematica) , 42 байта

Print@⌈Range[1,100,10/9]~Drop~{18,26}⌉

Попробуйте онлайн!

Арифметическая последовательность 1, 19/9, 29/9, 39/9, ... растет с правильной скоростью, при которой потолок пропускает все числа, заканчивающиеся в 2. Затем мы избавляемся от 20 до 29, Dropпингуя значения в индексах с 18 по 26.

Миша лавров
источник
Я не знаю, является ли консенсус Printнеобходимым, но все равно, кого это волнует.
Миша Лавров
[...] но кому это все равно. - это дух ...
Джонатан Фрех
Делай \[LeftCeiling]и \[RightCeiling]считай как один байт :)
user6014
@ user6014 Я считаю их 3 байтами, которые они занимают в Юникоде, но это все же немного дешевле, чем фактическая Ceilingкоманда.
Миша Лавров
@ МишаЛавров Звучит честно! Чистое решение.
user6014
4

C (GCC) , 62 55 байт

• 7 байт благодаря Джонатану Фреху

f(n){for(n=0;++n-101;n/10-2&&n%10-2&&printf("%d,",n));}

Зацикливает от 1 до 100 и печатает число, только если 2 не находится в единицах или десятках.

Попробуйте онлайн!

Asleepace
источник
1
55 байтов .
Джонатан Фрех
@JonathanFrech спасибо, это умно!
Спит
4

Powershell, 19 байт

1..100-split'.*2.*'

Этот скрипт показывает нулевое значение вместо «числа с 2 внутри» и полностью решает задачу «число 2 не должно появляться нигде в последовательности».

Выход:

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

Powerhsell (вывод не содержит нулевых значений), 24 байта

1..100-split'.*2.*'-ne''
Mazzy
источник
4

sh + coreutils, 16 символов

seq 100|sed /2/d

Создает последовательность от 1 до 100 (включительно) и удаляет все строки, в которых есть «2».

therealfarfetchd
источник
Этот код идентичен ответу Digital Trauma .
Руслан
о дерьмо, не видел этого, хотя я проверил. Должен ли я удалить это, так как мой был опубликован позже?
Therealfarfetchd
4

Z80Golf , 49 48 байтов

00000000: 1630 2e0a 5faf f57b fe02 2818 82ff f182  .0.._..{..(.....
00000010: ff92 3cf5 7dff f1bd 280a fe02 2803 f518  ..<.}...(...(...
00000020: e63c 18fa 7b3c bd20 db3e 31ff 3dff ff76  .<..{<. .>1.=..v

Попробуйте онлайн!

Монтаж:

ld d, 30h			; ascii '0' character
ld l, 0Ah			; number 10 and ascii newline
tens:
	ld e,a			; store tens digit
	xor a			; reset ones digit to 0
	push af			; store initial ones digit 0
	ones:
		ld a,e		; get stored tens digit
		cp 2
		jr z,cont	; if tens digit==2(e.g.20-29),skip loop
		add d
		rst 38h 	; print tens digit
		pop af		; get stored ones digit
		add d
		rst 38h 	; print ones digit
		sub d
		inc a		; increment ones digit
		push af		; store ones digit
		ld a, l
		rst 38h 	; print newline
		pop af		; get stored ones digit again
		cp l
		jr z,cont	; if ones digit==10, break loop
		cp 2
		jr z,inc_again	; if ones digit==2, incr again
		repeat_loop:
		push af		; store ones digit again
		jr ones		; repeat print loop
		inc_again:
			inc a
			jr repeat_loop
		
	cont:
	ld a,e			; get stored tens digit
	inc a			; increment tens digit
	cp l
	jr nz, tens		; if tens place!=10, continue loop
ld a,31h
rst 38h				; print '1'
dec a
rst 38h				; print '0'
rst 38h				; print '0'
halt

Сохранен один байт с repeat_loopскачком

Logern
источник
4

Python 3 , 53 51 50 49 46 байт

['2'in str(n)or print(n)for n in range(1,101)]

Попробуйте онлайн!

Не самый сильный язык для этой задачи, но я новичок в гольфе.

Спасибо комментаторам за советы!

гигафлоп
источник
Добро пожаловать в PPCG! Вы можете уменьшить его до 50, удалив пробел перед if.
ElPedro
[print(n)for n in range(1,101)if"2"not in str(n)]работает.
JosiahRyanW
Кроме того, на основе одного из ответов Python 2:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW
@JosiahRyanW Я не знал о неявной печати, спасибо!
Gigaflop
1
'2'in str(n)or print(n)короче охранника понимания.
Джонатан Фрех
4

Tcl , 44 байта

time {if ![regexp 2 [incr i]] {puts $i}} 100

Попробуйте онлайн!


Tcl , 47 байт

time {if [incr i]%10!=2&$i/10!=2 {puts $i}} 100

Попробуйте онлайн!

Tcl , 50 байт

time {if {2 ni [split [incr i] ""]} {puts $i}} 100

Попробуйте онлайн!

sergiol
источник
# Tcl , 49 байт time {if [string f 2 [incr i]]==-1 {puts $i}} 100 - неудачный outgolf!
sergiol
Вы можете заменить свой тест на regexp: ![regexp 2 [incr i]]для -3 байта
Дэвид
@ david Как получилось, что я не пришел с предложенным вами решением использования регулярных выражений? Спасибо.
sergiol
3

Баш , 31 байт

printf %d\\n {1..100}|grep -v 2

Попробуйте онлайн!

Спасибо Digital Trauma за короткий цикл.

кетон
источник
1
Добро пожаловать в PPCG! Как насчет echo $iвместо printf? Или даже лучше printf %d\\n {1..100}|grep -v 2?
Цифровая травма
да правильно. Я обновлю свой ответ.
кетон
Я учусь на самом деле, я не знаю, так много, спасибо.
кетон
Просто бьет мойecho {1..100}|tr ' ' \\n|grep -v 2
Марк Перриман
-1 байт, если вы используете sed /2/dвместо grep -v 2.
Руслан
3

ORK , 1092 байта

There is such a thing as a t
A t can w a number
A t can d a number
A t has a t which is a number

When a t is to w a number:
I have a mathematician called M
M's first operand is the number
M's second operand is 1
M is to add
The number is M's result
My t is 0
I have a number called n
n is the number
I am to d n
M's first operand is my t
M's second operand is 1
M is to compare
I have a scribe called W
If M says it's less then W is to write the number
If M says it's less then W is to write " "
M's first operand is the number
M's second operand is 100
M is to compare
If M says it's less then I am to loop

When a t is to d a number:
I have a mathematician called M
M's first operand is the number
M's second operand is 10
M is to modulo
I have a mathematician called N
N's first operand is M's result
N's second operand is 2
N is to compare
If N says it's equal then my t is 1
M is to divide
The number is M's result
M's first operand is the number
M's second operand is 0
M is to compare
If M says it's greater then I am to loop

When this program starts:
I have a t called T
T is to w 0

Попробуйте онлайн!

O bjects R K оол. Выход - список чисел, разделенных пробелами.

Это переводит (приблизительно) в следующий псевдокод:

class t {
	int t;
	
	void w(number) {
		label T_W;
		mathematician M;
		M.first_operand = number;
		M.second_operand = 1;
		M.add();
		number = M.result;
		t = 0;
		int n = number;
		d(n);
		M.first_operand = t;
		M.second_operand = 1;
		M.compare();
		scribe W;
		if M.its_less { W.write(number); }
		if M.its_less { W.write(" "); }
		M.first_operand = number;
		M.second_operand = 100;
		M.compare();
		if M.its_less { goto T_W; }
	}
	
	void d(number) {
		label T_D;
		mathematician M;
		M.first_operand = number;
		M.second_operand = 10;
		M.modulo();
		mathematician N;
		N.first_operand = M.result;
		N.second_operand = 2;
		N.compare();
		if N.its_equal { t = 1; }
		M.divide();
		number = M.result;
		M.first_operand = number;
		M.second_operand = 0;
		M.compare();
		if M.its_greater { goto T_D; }
	}
}

void main() {
	t T;
	T.w(0);
}

Как вы видете, все делается с использованием объектов, включая базовые математические и IO-функции (через встроенные классы математики и писцов). Только целые функции могут зацикливаться, что объясняет потребность в объекте с двумя функциями для выполнения работы.

JosiahRyanW
источник
3

PHP 7.1, 40 байт

while($i++<100)strstr($i,50)||print$i._;

печатает числа, разделенные подчеркиванием Запустите -nrили попробуйте онлайн .

Titus
источник
Хорошее использование дурацкого поведения PHP для разделения чисел, лол
Роберто Мальдонадо
1
На preg_filter()основании одного интересно. (Я никогда не использовал эту функцию 🤫.) Это один будет короче с preg_grep(): <?=join(_,preg_grep("/2/",range(1,100),1));.
Манатворк
2

брейкфук , 176 байт

---------[[-<]-[>]>[>]-[-<]<++]-[>-<+++++++++]>--[>[->]<[<<<]>>[->]>-]<<,<-[-<]>[>]<[.[->+<]++++++++++.,<]>>[>]>>->-<<<<[>>>[<<[<]<.>>[>]>.[-<+>]++++++++++.,>]<<[<]<,<]>>>>.<..

Попробуйте онлайн!

Короче определенно возможно. Это генерирует числа 1,3,4,5,6,7,8,9и0,1,3,4,5,6,7,8,9 . Сначала он выводит каждое число в первом списке, затем выводит каждую комбинацию первого и второго списка, а затем выводит только100 .

Объяснение:

---------   Push minus 9
[           Repeat 9 times
  [-<]-[>]    Add the negative of the number to the first list
  >[>]-[-<]<  Add the negative of the number to the second list
  ++          Increment the counter
]
Tape: 255 254 253 252 251 250 249 248 247 0' 0 246 247 248 249 250 251 252 253 254
-[>-<+++++++++]>--  Push 197
Tape: 255 254 253 252 251 250 249 248 247 0 197' 246 247 248 249 250 251 252 253 254
[
  >[->]<    Subtract 197 from every element in both lists to convert to digits
  [<<<]>>
  [->]>-
]
Tape: 58 57 56 55 54 53 52 51 49 0' 49 50 51 52 53 54 55 56 57
<<,<-[-<]>[>]<  Remove the 0 and the 2 from the first list
Tape: 58 57 56 55 54 53 52 51 0 0 0' 49 50 51 52 53 54 55 56 57
[  Loop over the first list
  .[->+<]        Print digit
  ++++++++++.,<  Print a newline
]
>>[>]>>->-   Remove the 2 from the second list
<<<<      
[  Loop over first list
  >>>
  [  Loop over second list
    <<[<]<.        Print first digit
    >>[>]>.        Print second digit
    [-<+>]         Move second digit over one
    ++++++++++.,>  Print a newline
  ]
  <<[<]<,<  Remove the digit from the first list and move to the next
]
>>>>.<..  Print 100 using the second list
Джо Кинг
источник
2

SimpleTemplate , 51 байт

Это было весело! И это вызов, когда мой язык может преуспеть.

{@forfrom 1to100}{@if_ is notmatches"<2>"}{@echol_}

Циклически перебирает все значения от 1 до 100, выводя те, у которых нет 2, через пробел.

Вы можете попробовать это на http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99

Ungolfed:

{@for i from 1 to 100}
    {@if i is not matches "<2>"}
        {@echo i, "\n"}
    {@/}
{@/}

{@/}Используется для закрытия {@for ...}и {@if ...}, но не является обязательным.
При компиляции в PHP он добавляет необходимое закрытие.


Если вам интересно, код для игры в гольф приводит к следующему PHP-коду:

// {@forfrom 1to100}
// ~ optimization enabled ~ inlining the results
foreach(array(...) as $DATA['_']){

    // {@if_ is notmatches"<2>"}
    if(!(preg_match("<2>", (isset($DATA['_'])?$DATA['_']:null)))) {

        // {@echol_}
        echo implode('', $FN['array_flat']((isset($DATA['_'])?$DATA['_']:null)));echo PHP_EOL;


// AUTO-CLOSE
};};

Где $FN['array_flat']определяется вне этого кода.

Исмаэль Мигель
источник