Zeigen Sie Zahlen ohne 2 an


22

Zeigen Sie Zahlen von eins bis einhundert (in aufsteigender Reihenfolge) an, aber Nummer 2 sollte an keiner Stelle in der Sequenz erscheinen. So sollten zum Beispiel die Zahlen zwei ( 2) oder dreiundzwanzig ( 23) nicht in der Reihenfolge sein.

Hier ist eine Beispielausgabe mit Zeilenumbrüchen, die die Zahlen trennen:

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
Ich gehe davon aus, dass das Gewinnkriterium Code-Golf ist, oder?
Luis Felipe De Jesus Munoz

4
Unsere Site funktioniert nicht so wie andere Sites aus dem Stack Exchange-Netzwerk. Bezüglich der akzeptierten Antworten berücksichtigen Sie bitte diesen Kommentar von Jonathan Allan . Und bitte fügen Sie ein Gewinnkriterium hinzu.
Arnauld

1
Könnte ich vorschlagen, die Sandbox in Zukunft zu verwenden, um vor dem Posten Feedback zu Ihren Herausforderungen zu erhalten?
Jo King

1
@Monolica Wenn die kürzeste Antwort gewinnt, benötigen Sie den Tag [code-golf]. Hier finden Sie eine Liste aller verfügbaren Gewinnkriterien-Tags zur späteren Bezugnahme.
Kevin Cruijssen

4
@ user202729 Eine willkürliche Einschränkung ist nicht erwünscht, nicht unzulässig.
Jonathan Frech

Antworten:



26

Taxi , 2399 2391 2370 1783 1773 1706 Bytes

-8 Byte für die Erkenntnis, dass es sich lohnt, einen bestimmten Passagier von der Riverview Bridge zu werfen, anstatt ihn für immer im Sunny Side Park zu lassen. Ah, was für eine schöne Stadt das ist.

-21 Bytes für das Herausnehmen eines Kommentars, den ich dummerweise hinterlassen habe.

-587 Bytes durch einfaches Ändern der gesamten Vorgehensweise (anscheinend ist ein kürzerer Weg arithmetisch; Ganzzahliges Teilen [17, 27, 37, 47, ...] durch 9 ergibt die Folge, aber Sie müssen die überspringen 20er selbst.)

-17 Bytes für die Erkenntnis, dass eine Zeichenkette in Anführungszeichen ohne Leerzeichen keine Anführungszeichen benötigt (danke Jo King!).

-67 Byte für die Feststellung, dass Zeilenumbrüche optional sind.

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]

Probieren Sie es online!

Dieser gewinnt mir in absehbarer Zeit keine Code-Golf-Wettbewerbe mehr, aber ich habe mich entschlossen, das esolang-Taxi auszuprobieren.

Taxi ist ein Esolang, bei dem die gesamte Programmierung durch das Abholen und Absetzen von Passagieren an verschiedenen Haltestellen in der fiktiven Stadt Townsburg erfolgt. Natürlich geht Ihrem Taxi manchmal das Benzin aus, daher müssen Sie auch ab und zu Tankstellen aufsuchen und mit den Gutschriften bezahlen, die Sie als Fahrpreis erhalten (in diesem Fall muss ich nur für Benzin anhalten - bei Go More - einmal pro Schleifeniteration!).

Ich habe einige Tricks angewendet, um die Dateigröße ein wenig zu verringern, z. B. das Umformulieren von Anweisungen wie z. east 1st left, 2nd rightB. das e 1 l 2 rEntfernen des theoptionalen Wortes und die Verwendung der am wenigsten komplizierten Route zu allen meinen Zielen (nicht unbedingt der kürzeste Weg).

Ich hasse diese kürzere Lösung mehr als die, die mir ursprünglich einfiel. Diese Lösung ist eine allgemeinere Methode zur Ausführung der Aufgabe, die an einer beliebigen Stelle beginnen und enden kann. Hier ist es in seiner Gesamtheit.

2245 Bytes (viel allgemeiner)

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]

Probieren Sie es online!

Und wenn Mega-Cheating erlaubt ist, ist dieses viel kürzer als eines der beiden letzten.

456 Bytes (total betrogen)

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.

Probieren Sie es online!


Das Zitat ist hilfreich, danke. Ich bin jedoch nicht einverstanden mit der Sache "Ich muss nicht in die Taxigarage gehen". Ist das Beenden mit einem Fehler erlaubt? Ich kann hier keine guten allgemeinen Regeln finden.
JosiahRyanW

Ja, im Allgemeinen wird STDERR ignoriert. Relevante Meta
Jo King

Einige meiner Antworten könnten davon profitieren.
JosiahRyanW

22

Python 2 , 39 Bytes

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

Probieren Sie es online!

Verwendet arithmetische Operationen nur zum Generieren von Zahlen ohne 2en.

Der Wert kfolgt der arithmetischen Progression 17, 27, 37, 47, ..., die, wenn durch 9 dividiert 1,3,4,5,6,7,8,9,10,11,13,14,..., Zahlen ergibt, die nicht mit 2 enden. Um 20 bis 29 zu überspringen, werden die Ausgaben um 10 nach einem bestimmten Schwellenwert erhöht.


14

JavaScript (ES6), 43 Byte

Gibt die Sequenz als durch Kommas getrennte Zeichenfolge zurück.

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

Probieren Sie es online!

Warum das so machen?

Wir könnten von 1 bis 100 iterieren und jede Zahl mit testen /2/.test(n), was eine ziemlich knappe Aussage ist. Aber in diesem Szenario müssten wir leere Einträge mit so etwas wie behandeln (/2/.test(n)?'':...), was ein paar Bytes mehr hinzufügt.

Dies würde zum Beispiel für 45 Bytes funktionieren :

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

Oder dies würde für 44 Bytes funktionieren , wenn ein führendes Komma akzeptabel ist:

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

Alles in allem (und bis zum Beweis des Gegenteils) stellt sich heraus, dass es kürzer ist, alle Werte von n , die eine 2 enthalten , sofort zu überspringen .n2

Kommentiert

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
Das ist so cool!
Emigna

1
41 Bytes mit Ihrem Trick, wenn wir ein führendes Komma haben könnten.
Oliver

12

R , 19 Bytes

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

Probieren Sie es online!


grep(2,1:100,inv=T)für 19.
J.Doe

2
Ha - das habe ich zuerst versucht, aber v=Fauch, weil ich mir natürlich dachte, ich will die Werte und nicht die Indizes ... duh!
ngm

Das Invertieren des Regex selbst ist (in diesem Fall) ein Byte kürzer.
ngm

Funktioniert nicht, lässt 2s noch vorbei. Du brauchst ^[^2]*$was, ähm, nicht kürzer ist.
J.Doe

4
Was, sollen wir jetzt unsere Antworten überprüfen?
ngm


10

Perl 6 , 22 Bytes

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

Probieren Sie es online!

Es gibt wahrscheinlich eine bessere Möglichkeit, den Codeblock zu erstellen, aber ich konnte kein reguläres Adverb finden, um die Übereinstimmung umzukehren


Entferne die Klammern um die Zahlen. Ansonsten ist es in Ordnung.
Monolica

@ Monolica Fixed
Jo King

1
@Monolica Es scheint ein bisschen komisch, dass du meine Antwort als nicht als Liste drucken darfst, wo so viele andere Antworten dies tun. Auf der anderen Seite kostet es mich keine Bytes, also was auch immer
Jo King

7

PowerShell , 22 16 Bytes

1..100-notmatch2

Probieren Sie es online!

-6 bytes dank mazzy

Erzeugt den Bereich 1bis 100und zieht dann die Objekte heraus, an denen sie -notmatchdie Nummer haben 2. Wenn Sie das -notmatchgegen ein Array wie dieses ausführen, wirkt es wie ein Filter im Array. Jedes Element verbleibt in der Pipeline, und die Ausgabe ist implizit.


? 1..100-notmatch2
mazzy

@mazzy Natürlich, warum habe ich nicht daran gedacht? Vielen Dank!
AdmBorkBork

6

Haskell , 48 33 31 Bytes

Vielen Dank an @JonathanFrech für fünfzehn Bytes und @xnor für zwei weitere! Ich habe einen großen Golf verpasst und wusste nicht, dass main=print$man darauf verzichten kann.

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

Probieren Sie es online!

Leicht zu erweitern durch Ändern der 100. Stringifiziert alle Zahlen und behält nur die ohne ein '2'.


Sieh das ; das main=print$ist nicht nötig. Hast du deinen Code getestet? Ich denke nicht, dass elem'2'das gültige Syntax ist. Warum map? Macht einfach filter(not.elem '2'.show)[1..100]den Job.
Jonathan Frech

@ JonathanFrech Wow, das habe ich verpasst. : / Keine Ahnung, wohin dieser Raum ging! Es ist dort in der TIO ...
Khuldraeseth na'Barya

2
Haskell hat notElemdafür not.elem, ist aber noch kürzer all(/='2').
Xnor



5

Java 10, 67 Bytes

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

Probieren Sie es online aus.

Erläuterung:

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

Retina , 19 17 Bytes


100*
.
$.>`¶
A`2

Probieren Sie es online! Bearbeiten: 2 Bytes dank @ovs gespeichert, obwohl die letzte Zeile jetzt eine neue Zeile enthält. Erläuterung:


100*

Fügen Sie 100 Zeichen ein.

.
$.>`¶

Ersetzen Sie jedes Zeichen durch die Anzahl der Zeichen bis einschließlich dieses Zeichens sowie eine neue Zeile.

A`2

Entfernen Sie alle Einträge, die a enthalten 2.


Arbeitet . $.>`¶für die zweite Stufe?
Ovs

@ovs Ich hatte zuvor etwas Komplizierteres gehabt und bin zu gewechselt, L$um eine führende Newline zu vermeiden, also hatte ich nicht realisiert, dass ich zurückwechseln konnte, danke.
Neil


4

Wolfram Language (Mathematica) , 42 Byte

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

Probieren Sie es online!

Die arithmetische Sequenz 1, 19/9, 29/9, 39/9, ... wächst mit der richtigen Geschwindigkeit, sodass bei der Berechnung der Obergrenze alle mit 2 endenden Zahlen übersprungen werden. Dann werden 20 bis 29 durch DropPing der Werte beseitigt bei den Indizes 18 bis 26.


Ich weiß nicht, ob der Konsens ist, dass das Printnotwendig ist, aber wen interessiert das schon.
Mischa Lawrow

[...] aber wen interessiert das schon. - das ist der Geist ...
Jonathan Frech

Tun \[LeftCeiling]und \[RightCeiling]wirklich als ein einzelnes Byte zählen :)
user6014

@ user6014 Ich zähle sie als die 3 Bytes, die sie in Unicode aufnehmen, aber es ist immer noch ein bisschen billiger als ein tatsächlicher CeilingBefehl.
Mischa Lawrow

@ Mischa Lawrow Klingt fair! Ordentliche Lösung.
User6014


4

Powershell, 19 Bytes

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

Dieses Skript zeigt stattdessen den Nullwert 'Zahlen mit 2 innen' und löst die Aufgabe 'Nummer 2 sollte nirgendwo in der Sequenz erscheinen' vollständig.

Ausgabe:

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 (Ausgabe enthält keine Nullwerte), 24 Byte

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

4

sh + coreutils, 16 Zeichen

seq 100|sed /2/d

Erzeugt eine Sequenz von 1 bis 100 (einschließlich) und löscht alle Zeilen, in denen '2' enthalten ist.


Dieser Code ist identisch mit der Antwort von Digital Trauma .
Ruslan

Oh Mist, hab das nicht gesehen, obwohl ich nachgesehen habe. Sollte ich dies löschen, da meine später veröffentlicht wurde?
Therealfarfetchd

4

Z80Golf , 49 48 Bytes

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

Probieren Sie es online!

Versammlung:

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

Ein Byte mit dem repeat_loopSprung gespeichert


4

Python 3 , 53 51 50 49 46 Bytes

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

Probieren Sie es online!

Nicht die stärkste Sprache für diese Aufgabe, aber ich bin neu im Golfen.

Vielen Dank an die Kommentatoren für ihre Tipps!


Willkommen bei PPCG! Sie können es auf eine Runde 50 bringen, indem Sie das Leerzeichen vor dem löschen if.
ElPedro

[print(n)for n in range(1,101)if"2"not in str(n)]funktioniert.
JosiahRyanW

Alternativ, basierend auf einer der Antworten von Python 2:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW

@JosiahRyanW Der implizite Ausdruck war mir nicht bekannt, danke!
Gigaflop

1
'2'in str(n)or print(n)ist kürzer als ein Wächter des Verstehens.
Jonathan Frech

4

Tcl , 44 Bytes

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

Probieren Sie es online!


Tcl , 47 Bytes

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

Probieren Sie es online!

Tcl , 50 Bytes

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

Probieren Sie es online!


# Tcl , 49 bytes time {if [string f 2 [incr i]]==-1 {puts $i}} 100 - Outgolf fehlgeschlagen!
Sergiol

Sie könnten Ihren Test mit einem regexp: ![regexp 2 [incr i]]für -3 Bytes ersetzen
David

@david Wie war es möglich, dass ich mit der von Ihnen vorgeschlagenen Lösung, reguläre Ausdrücke zu verwenden, nicht gekommen bin? Vielen Dank.
Sergiol


3

Bash , 31 Bytes

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

Probieren Sie es online!

Dank Digital Trauma für die kurze Schleife.


1
Willkommen bei PPCG! Wie wäre es echo $istatt der printf? Oder noch besser printf %d\\n {1..100}|grep -v 2?
Digital Trauma

ja, genau. Ich werde meine Antwort aktualisieren.
Keton

Ich lerne eigentlich, ich weiß nicht so viel, btw danke.
Keton

Schlägt mich einfachecho {1..100}|tr ' ' \\n|grep -v 2
Mark Perryman

-1 Byte, wenn Sie sed /2/danstelle von verwenden grep -v 2.
Ruslan

3

ORK , 1092 Bytes

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

Probieren Sie es online!

O Objekte R K ool. Die Ausgabe ist eine durch Leerzeichen getrennte Liste von Zahlen.

Dies übersetzt (ungefähr) in den folgenden Pseudocode:

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);
}

Wie Sie sehen, wird alles mithilfe von Objekten ausgeführt, einschließlich grundlegender Mathematik- und E / A-Funktionen (über die integrierten Mathematik- und Schreibklassen). Nur ganze Funktionen können eine Schleife ausführen, was erklärt, dass für die Arbeit ein Objekt mit zwei Funktionen erforderlich ist.




3

PHP 7.1, 40 Bytes

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

druckt durch Unterstriche getrennte Zahlen. Laufen Sie mit -nroder versuchen Sie es online .


Nizza Verwendung von PHP verrücktes Verhalten, um die Zahlen zu trennen, lol
Roberto Maldonado

1
Die preg_filter()Basis ist interessant. (Ich habe nie diese Funktion 🤫.) Dass man mit kürzer sein würde preg_grep(): <?=join(_,preg_grep("/2/",range(1,100),1));.
Manatwork


2

Brainfuck , 176 Bytes

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

Probieren Sie es online!

Kürzere ist definitiv möglich. Dies erzeugt die Zahlen 1,3,4,5,6,7,8,9und 0,1,3,4,5,6,7,8,9. Zuerst gibt es jede Zahl in der ersten Liste aus, dann gibt es jede Kombination der ersten und zweiten Liste aus und druckt schließlich nur 100.

Erläuterung:

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

Das war eine lustige Herausforderung! Und es ist eine Herausforderung, bei der meine Sprache gut kann.

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

Durchläuft alle Werte von 1 bis 100 und gibt diejenigen ohne 2 aus, die durch eine neue Zeile getrennt sind.

Sie können es unter http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99 ausprobieren

Ungolfed:

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

Das {@/}wird zum Schließen des {@for ...}und verwendet {@if ...}, ist aber optional.
Beim Kompilieren in PHP wird das erforderliche Schließen hinzugefügt.


Wenn Sie neugierig sind, ergibt der Golf-Code diesen PHP-Code:

// {@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
};};

Wo $FN['array_flat']ist außerhalb dieses Codes definiert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.