Wyświetlaj liczby od jednego do stu (w porządku rosnącym), ale liczba 2 nie powinna pojawiać się nigdzie w sekwencji. Na przykład liczby dwa ( 2
) lub dwadzieścia trzy ( 23
) nie powinny znajdować się w sekwencji.
Oto przykładowy wynik z nowymi liniami oddzielającymi liczby:
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
źródło
źródło
[code-golf]
. Oto lista wszystkich dostępnych tagów kryteriów zwycięstwa do wykorzystania w przyszłości.Odpowiedzi:
05AB1E , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Taxi ,
239923912370178317731706 bajtów-8 bajtów za uświadomienie sobie, że zamiast pozostawiać pewnego pasażera w Sunny Side Park na zawsze, bardziej warto zrzucić go z Riverview Bridge. Ach, jakie to piękne miasto.
-21 bajtów za wyciągnięcie komentarza, w który głupio zostawiłem.
-587 bajtów, po prostu zmieniając całą drogę, którą do tego podszedłem (najwyraźniej krótszą drogą jest arytmetyka; dzielenie liczb całkowitych [17, 27, 37, 47, ...] przez 9 daje sekwencję, ale musisz pominąć 20 sam.)
-17 bajtów, aby uświadomić sobie, że łańcuch zawierający cudzysłowy bez spacji nie potrzebuje przecież cudzysłowów (dzięki Jo King!).
-67 bajtów dla realizacji, że łamanie linii jest opcjonalne.
Wypróbuj online!
Ten nie wygrywa w najbliższym czasie żadnych zawodów golfowych, ale postanowiłem wypróbować esolang Taxi.
Taxi to esolang, w którym całe programowanie odbywa się poprzez odbiór i wysadzenie pasażerów na różnych przystankach w fikcyjnym miasteczku Townsburg. Oczywiście w taksówce czasem zabraknie gazu, więc musisz także co jakiś czas odwiedzać stacje benzynowe i płacić za kredyty, które otrzymujesz jako opłatę (w tym przypadku muszę tylko zatrzymać się na benzynę - w Go More - raz na iterację w pętli!).
Użyłem kilku sztuczek, które nieco zmniejszają rozmiar pliku, takich jak przeformułowanie kierunków, takich
east 1st left, 2nd right
jake 1 l 2 r
, usunięcie słowathe
tam, gdzie jest opcjonalne, i użycie najmniej skomplikowanej trasy do wszystkich moich miejsc docelowych (niekoniecznie najkrótszej ścieżki).Nienawidzę tego krótszego rozwiązania niż to, które pierwotnie wymyśliłem. To rozwiązanie tutaj jest bardziej ogólnym sposobem wykonania zadania, które można rozpocząć i zakończyć w dowolnym miejscu. Oto jest w całości.
2245 bajtów (znacznie bardziej ogólne)
Wypróbuj online!
A jeśli dozwolone jest mega-oszukiwanie, ten jest znacznie krótszy niż którykolwiek z dwóch ostatnich.
456 bajtów (całkowite oszustwo)
Wypróbuj online!
źródło
Python 2 , 39 bajtów
Wypróbuj online!
Używa operacji arytmetycznych tylko do generowania liczb bez 2.
Wartość
k
podąża za postępem arytmetycznym17, 27, 37, 47, ...
, który po podzieleniu podłogi przez 9 daje1,3,4,5,6,7,8,9,10,11,13,14,...
liczby, które nie kończą się na 2. Aby pominąć 20 do 29, wyniki są zwiększane o 10 poza pewien próg.źródło
JavaScript (ES6), 43 bajty
Zwraca sekwencję jako ciąg rozdzielany przecinkami.
Wypróbuj online!
Po co to robić w ten sposób?
Możemy iterować od1 do 100 i testować każdą liczbę
/2/.test(n)
, co jest dość zwięzłym stwierdzeniem. Ale w tym scenariuszu musielibyśmy obsługiwać puste wpisy za pomocą czegoś podobnego(/2/.test(n)?'':...)
, co dodaje kilka dodatkowych bajtów.Na przykład działałoby to dla 45 bajtów :
Lub działałoby to dla 44 bajtów , jeśli dopuszczalny jest przecinek wiodący:
Podsumowując (i dopóki nie zostanie udowodnione inaczej) okazuje się, że krótsze jest od razu pominięcie wszystkich wartościn które zawierają 2 .
Skomentował
źródło
R , 19 bajtów
Wypróbuj online!
źródło
grep(2,1:100,inv=T)
dla 19.v=F
również dlatego, że oczywiście pomyślałem sobie: chcę wartości, a nie wskaźników ... nie!^[^2]*$
co nie jest krótsze.Python 2 , 44 bajty
Wypróbuj online!
źródło
Perl 6 , 22 bajtów
Wypróbuj online!
Prawdopodobnie jest lepszy sposób na wykonanie bloku kodu, ale nie mogłem znaleźć przysłówka wyrażenia regularnego, aby odwrócić dopasowanie
źródło
PowerShell ,
2216 bajtówWypróbuj online!
-6 bajtów dzięki mazzy
Generuje zakres
1
do100
, a następnie wyciąga te obiekty, w których robią-notmatch
liczbę2
. Uruchomienie-notmatch
przeciw tablicy w ten sposób działa jak filtr w tablicy. Każdy element jest pozostawiony w potoku, a dane wyjściowe są niejawne.źródło
1..100-notmatch2
Haskell ,
483331 bajtówThanks @JonathanFrech for fifteen bytes saved, and @xnor for another two! I missed a big golf and didn't realize
main=print$
can be omitted.Try it online!
Easily extended by changing the
100
. Stringifies all the numbers and keeps only those without a'2'
.źródło
main=print$
is not necessary. Have you tested your code? I do not think thatelem'2'
is valid syntax. Whymap
? Simplyfilter(not.elem '2'.show)[1..100]
does the job.notElem
fornot.elem
, but even shorter isall(/='2')
.Bash + GNU utilities, 16
Try it online!
źródło
Japt, 7 bytes
Try it online!
źródło
Java 10, 67 bytes
Try it online.
Explanation:
źródło
Retina,
1917 bytesTry it online! Edit: Saved 2 bytes thanks to @ovs, although the last line now includes a newline. Explanation:
Insert 100 characters.
Replace each character with the number of characters up to and including that character, plus a newline.
Remove all entries that contain a
2
.źródło
.
$.>`¶
work for the second stage?L$
to avoid a leading newline, so I hadn't realised I could switch back, thanks.Stax, 6 bytes
Run and debug it
Unpacked, ungolfed, and commented, it looks like this.
Run this one
źródło
Wolfram Language (Mathematica), 42 bytes
Try it online!
The arithmetic sequence 1, 19/9, 29/9, 39/9, ... grows at just the right rate that taking the ceiling skips all the numbers ending in 2. Then we get rid of 20 through 29 by
Drop
ping the values at indices 18 through 26.źródło
Print
is necessary, but who really cares, anyway.\[LeftCeiling]
and\[RightCeiling]
really count as a single byte :)Ceiling
command.C (GCC),
6255 Bytes• 7 Bytes thanks to Jonathan Frech
f(n){for(n=0;++n-101;n/10-2&&n%10-2&&printf("%d,",n));}
Loops from 1 to 100 and prints the number only if 2 is not in the ones or tens place.
Try it online!
źródło
Powershell, 19 bytes
This script show null-value instead 'numbers with 2 inside' and completely solves the task 'number 2 shouldn’t appear anywhere in the sequence'.
Output:
Powerhsell (output does not contain null-values), 24 bytes
źródło
sh + coreutils, 16 chars
Generates sequence from 1 to 100 (inclusive) and deletes any lines that have '2' in them.
źródło
Z80Golf,
4948 bytesTry it online!
Assembly:
Saved one byte with the
repeat_loop
jumpźródło
Python 3,
53 51 50 4946 bytesTry it online!
Not the strongest language for this task, but I'm new to golfing.
Thanks to the commenters for their tips!
źródło
if
.[print(n)for n in range(1,101)if"2"not in str(n)]
works.n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
'2'in str(n)or print(n)
is shorter than a comprehension guard.Tcl, 44 bytes
Try it online!
Tcl, 47 bytes
Try it online!
Tcl, 50 bytes
Try it online!
źródło
time {if [string f 2 [incr i]]==-1 {puts $i}} 100
— Failed outgolf!regexp
:![regexp 2 [incr i]]
for -3 bytesKotlin, 32 bytes
Try it online!
źródło
Bash, 31 bytes
Try it online!
Thanks to Digital Trauma for short loop.
źródło
echo $i
instead of the printf? Or even betterprintf %d\\n {1..100}|grep -v 2
?echo {1..100}|tr ' ' \\n|grep -v 2
sed /2/d
instead ofgrep -v 2
.ORK, 1092 bytes
Try it online!
Objects R Kool. Output is a space-delimited list of numbers.
This translates (approximately) to the following pseudocode:
As you can see, everything is done using objects, including basic math and IO functions (through the built-in mathematician and scribe classes). Only whole functions can loop, which explains the need for an object with two functions to do the work.
źródło
MathGolf,
76 bytesTry it online!
Explanation
źródło
C (clang), 56 bytes
Try it online!
źródło
PHP 7.1, 40 bytes
prints numbers separated by underscores. Run with
-nr
or try it online.źródło
preg_filter()
based one is interesting. (I never used that function. 🤫) That one would be shorter withpreg_grep()
:<?=join(_,preg_grep("/2/",range(1,100),1));
.Red, 44 bytes
Try it online!
Uses
unless
instead ofif not
, because why not? :)źródło
brainfuck, 176 bytes
Try it online!
Shorter is definitely possible. This generates the numbers
1,3,4,5,6,7,8,9
and0,1,3,4,5,6,7,8,9
. First it outputs each number in the first list, then it outputs every combination of the first and second list, then finally prints just100
.Explanation:
źródło
SimpleTemplate, 51 bytes
This was a fun challenge! And it is a challenge where my language can do well.
Cycles through all values from 1 to 100, outputting the ones that don't have 2, separated by a newline.
You can try it on http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99
Ungolfed:
The
{@/}
is used to close the{@for ...}
and{@if ...}
, but is optional.When compiling to PHP, it adds the needed closing.
If you're curious, the golfed code results in this PHP code:
Where
$FN['array_flat']
is defined outside of this code.źródło