Відображення номерів, у яких відсутня 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

7
Я припускаю, що критерій виграшу - це код-гольф, правда?
Luis felipe De jesus Munoz

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 Taxi.

Таксі - це езоланг, в якому все програмування здійснюється за допомогою підбирання та скидання пасажирів на різних зупинках у вигаданому місті Таунсбург. Звичайно, у вашому таксі іноді не вистачає газу, тому вам потрібно так часто відвідувати АЗС і платити, використовуючи кредити, які ви отримуєте як вартість проїзду (у цьому випадку мені потрібно зупинитися лише на газ - на Go More - один раз за ітерацію циклу!).

Я використав декілька хитрощів, які трохи зменшують розмір файлів, наприклад, перефразовуючи вказівки типу, east 1st left, 2nd rightяк 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

Так, 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 на певний поріг.


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

1
Це так круто!
Емінья

1
41 байт, використовуючи трюк, якщо у нас може бути провідна кома.
Олівер

12

R , 19 байт

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

Спробуйте в Інтернеті!


grep(2,1:100,inv=T)для 19.
Дж. Дое

2
Ха - це було те, що я спробував спочатку, але v=Fтак само, бо, очевидно, я думав собі, що хочу цінностей, а не показників ... так!
ngm

Інвертування самого регулярного виразу - це байт коротший (в даному випадку).
ngm

Не працює, все ще дозволяє пропустити минулі. Вам знадобиться те, ^[^2]*$що, гм, не коротше.
J.Doe

4
Що, ми повинні перевірити наші відповіді зараз?
ngm


10

Perl 6 , 22 байти

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

Спробуйте в Інтернеті!

Напевно, є кращий спосіб зробити блок коду, але я не зміг знайти прислівник для регулярного вираження, щоб перевернути відповідність


зняти дужки навколо цифр. Інакше це добре.
Моноліка

@Monolica Виправлено
Джо Кінг

1
@Monolica Здається трохи дивно, що ти виділив мою відповідь як не дозволяється друкувати як список, де так багато інших відповідей. З іншого боку, це не коштує мені жодних байтів, так що б там не було
Джо Кінг

7

PowerShell , 22 16 байт

1..100-notmatch2

Спробуйте в Інтернеті!

-6 байт завдяки мазі

Створює діапазон 1до 100, а потім витягує ті об'єкти, де вони роблять -notmatchчисло 2. Запуск -notmatchпроти масиву на зразок цього діє як фільтр масиву. Кожен елемент залишається на конвеєрі, а вихід неявний.


? 1..100-notmatch2
mazzy

@mazzy Звичайно, чому я не придумав цього? Спасибі!
AdmBorkBork

6

Haskell , 48 33 31 байт

Дякую @JonathanFrech за збережені п'ятнадцять байтів, а @xnor - ще два! Я пропустив великий гольф і не зрозумів, що main=print$його можна опустити.

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

Спробуйте в Інтернеті!

Легко розширюється, змінюючи 100. Stringify всі числа та зберігає лише ті, що не мають a '2'.


Дивіться це ; main=print$не потрібно. Ви перевірили свій код? Я не думаю, що elem'2'це правильний синтаксис. Чому map? Просто filter(not.elem '2'.show)[1..100]виконує роботу.
Джонатан Фрех

@JonathanFrech Ух, пропустив це. : / Немає поняття, куди пішов цей простір! Це там, у
ТІО

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

Спробуйте в Інтернеті! Редагувати: збережено 2 байти завдяки @ovs, хоча останній рядок тепер включає новий рядок. Пояснення:


100*

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

.
$.>`¶

Замініть кожного символу на кількість символів до цього символу, включаючи новий рядок.

A`2

Видаліть усі записи, які містять 2.


Чи . $.>`¶працює на другому етапі?
ов

@ovs У мене було щось складніше раніше, і я перейшов, щоб L$уникнути провідного нового рядка, тому не зрозумів, що можу переключитися назад, дякую.
Ніл


4

Мова Вольфрама (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 байтами, які вони займають в Unicode, але це все-таки трохи дешевше, ніж фактична Ceilingкоманда.
Міша Лавров

@MishaLavrov Звучить ярмарок! Охайний розчин.
user6014


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''

4

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

seq 100|sed /2/d

Створює послідовність від 1 до 100 (включно) та видаляє будь-які рядки, у яких є "2".


Цей код ідентичний відповіді 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стрибком


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 Я не знав про неявну друк, дякую!
Гігафлоп

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

Спробуйте в Інтернеті!


# Tcl , 49 байт time {if [string f 2 [incr i]]==-1 {puts $i}} 100 - Не вдалося перевершити!
сергіол

Ви могли б замінити тест з regexp: ![regexp 2 [incr i]]для -3 байт
Девіду

@david Як це можливо, я не прийшов із запропонованим вами рішенням щодо використання регулярних виразів? Спасибі.
сергіол


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

ОРК , 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 ool. Вихід - це список, обмежений пробілом.

Це перекладається (приблизно) до наступного псевдокоду:

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-функції (через вбудовані класи математика та переписувача). Цикл можуть здійснювати лише цілі функції, що пояснює необхідність виконання об'єктом двох функцій.




3

PHP 7.1, 40 байт

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

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


Приємне використання химерної поведінки 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

Безголівки:

{@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']визначено поза цим кодом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.