Visualizza i numeri che mancano di 2


22

Visualizza i numeri da uno a cento (in ordine crescente), ma il numero 2 non dovrebbe apparire in nessuna parte della sequenza. Quindi, ad esempio, i numeri due (2 ) o ventitre ( 23) non dovrebbero essere nella sequenza.

Ecco un esempio di output, con le nuove righe che separano i numeri:

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
Presumo che il criterio vincente sia il code-golf giusto?
Luis felipe De jesus Munoz,

4
Il nostro sito non funziona allo stesso modo di altri siti della rete Stack Exchange. Per quanto riguarda le risposte accettate, ti preghiamo di prendere in considerazione questo commento di Jonathan Allan . E per favore aggiungi un criterio vincente.
Arnauld,

1
Potrei suggerire di utilizzare Sandbox in futuro per ottenere feedback sulle tue sfide prima di pubblicare?
Jo King,

1
@Monolica Se la risposta più corta vince, avrai bisogno del tag [code-golf]. Ecco un elenco di tutti i tag dei criteri vincenti disponibili per riferimento futuro.
Kevin Cruijssen,

4
@ user202729 La restrizione arbitraria non è gradita, non è vietata.
Jonathan Frech,

Risposte:



26

Taxi , 2399 2391 2370 1783 1773 1706 byte

-8 byte per rendersi conto che, invece di lasciare per sempre un certo passeggero a Sunny Side Park, vale la pena buttarli giù da Riverview Bridge. Ah, che bella città è questa.

-21 byte per aver rilasciato un commento che ho lasciato stupidamente dentro.

-587 byte semplicemente cambiando l'intero modo in cui mi sono comportato (apparentemente un modo più breve è l'aritmetica; la divisione intera [17, 27, 37, 47, ...] per 9 produce la sequenza, ma devi saltare il 20 anni.)

-17 byte per la realizzazione del fatto che qualsiasi stringa racchiusa tra virgolette senza spazio non ha bisogno di virgolette dopo tutto (grazie Jo King!).

-67 byte per la consapevolezza che le interruzioni di riga sono facoltative.

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]

Provalo online!

Questo non mi farà vincere nessuna competizione di codice golf in qualunque momento presto, ma ho deciso di provare il taxi esolang.

Il taxi è un esolang in cui tutta la programmazione viene eseguita raccogliendo e rilasciando i passeggeri alle varie fermate nella città immaginaria di Townsburg. Certo, il tuo taxi a volte esaurisce il gas, quindi devi anche visitare le stazioni di servizio ogni tanto e pagare usando i crediti che ricevi come tariffa (in questo caso, ho solo bisogno di fermarmi per il gas - su Vai altro - iterazione una volta per ciclo!).

Ho usato alcuni trucchi che riducono un po 'le dimensioni del file, come riformulare indicazioni come east 1st left, 2nd rightas e 1 l 2 r, rimuovere la parola thedove è opzionale e usare il percorso meno complicato verso tutte le mie destinazioni (non necessariamente il percorso più breve).

Odio questa soluzione più breve di quella che mi è venuta in origine. Questa soluzione quaggiù è un modo più generale per eseguire l'attività, che potrebbe iniziare e terminare ovunque tu voglia. Eccolo, nella sua interezza.

2245 byte (molto più generale)

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]

Provalo online!

E se è consentito il mega cheat, questo è molto più breve di uno degli ultimi due.

456 byte (totalmente barare)

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.

Provalo online!


Quella cosa tra virgolette è utile, grazie. Tuttavia, non sono d'accordo con la cosa "non devo andare al Taxi Garage". È consentito uscire con un errore? Non riesco a trovare un buon insieme di regole generali su questo.
JosiahRyanW,

Sì, generalmente STDERR viene ignorato. Meta rilevante
Jo King,

Alcune delle mie risposte potrebbero trarne beneficio.
JosiahRyanW,

22

Python 2 , 39 byte

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

Provalo online!

Utilizza le operazioni aritmetiche solo per generare numeri senza 2.

Il valore ksegue la progressione aritmetica 17, 27, 37, 47, ..., che una volta diviso per 9 dà il 1,3,4,5,6,7,8,9,10,11,13,14,...conto alla rovescia di numeri che non finiscono in 2. Per saltare da 20 a 29, le uscite vengono aumentate di 10 oltre una certa soglia.


14

JavaScript (ES6), 43 byte

Restituisce la sequenza come una stringa separata da virgola.

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

Provalo online!

Perché farlo in questo modo?

Potremmo iterare da 1 a 100 e testare ogni numero con /2/.test(n), che è una dichiarazione piuttosto concisa. Ma in questo scenario, dovremmo gestire voci vuote con qualcosa del genere (/2/.test(n)?'':...), che aggiunge un altro paio di byte.

Ad esempio, questo funzionerebbe per 45 byte :

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

O funzionerebbe per 44 byte , se una virgola iniziale è accettabile:

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

Tutto sommato (e fino a prova contraria), risulta essere più breve per saltare immediatamente tutti i valori di n che contengono un 2 .

Commentate

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
Questo è veramente forte!
Emigna,

1
41 byte usando il tuo trucco se potessimo avere una virgola iniziale.
Oliver,

12

R , 19 byte

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

Provalo online!


grep(2,1:100,inv=T)per 19.
J.Doe,

2
Ah - questo è stato quello che ho provato all'inizio, ma v=Fanche perché ovviamente, ho pensato tra me e me, voglio i valori e non gli indici ... duh!
ngm

L'inversione della regex stessa è un byte più breve (in questo caso).
ngm

Non funziona, lascia ancora 2 secondi. Avresti bisogno ^[^2]*$che non è più breve.
J.Doe,

4
Cosa, dovremmo controllare le nostre risposte ora?
ngm


10

Perl 6 , 22 byte

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

Provalo online!

Probabilmente esiste un modo migliore per eseguire il blocco di codice, ma non sono riuscito a trovare un avverbio regex per invertire la corrispondenza


rimuovere le parentesi attorno ai numeri. Altrimenti va bene.
Monolica,

@Monolica Fixed
Jo King,

1
@Monolica Sembra un po 'strano che tu abbia individuato la mia risposta come non autorizzata a stampare come un elenco, dove così tante altre risposte lo fanno. D'altra parte, non mi costa alcun byte, quindi qualunque cosa
Jo King,

7

PowerShell , 22 16 byte

1..100-notmatch2

Provalo online!

-6 byte grazie a mazzy

Genera l'intervallo 1a 100, quindi estrae quegli oggetti dove fanno -notmatchil numero 2. L'esecuzione di -notmatchun array in questo modo si comporta come un filtro sull'array. Ogni articolo viene lasciato sulla pipeline e l'output è implicito.


? 1..100-notmatch2
mazzy,

@mazzy Certo, perché non ci ho pensato? Grazie!
AdmBorkBork,

6

Haskell , 48 33 31 byte

Grazie @JonathanFrech per quindici byte salvati e @xnor per altri due! Mi mancava un grande golf e non mi rendevo conto di main=print$poter essere omesso.

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

Provalo online!

Facilmente ampliabile modificando il 100. Racchiude tutti i numeri e mantiene solo quelli senza a '2'.


Vedi questo ; il main=print$non è necessaria. Hai testato il tuo codice? Non penso che elem'2'sia una sintassi valida. Perché map? Fa semplicemente filter(not.elem '2'.show)[1..100]il lavoro.
Jonathan Frech,

@JonathanFrech Wow, l'ho perso. : / Nessun indizio su dove sia andato quello spazio! È lì nel TIO ...
Khuldraeseth na'Barya,

2
Haskell ha notElemper not.elem, ma è ancora più breve all(/='2').
xnor



5

Java 10, 67 byte

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

Provalo online.

Spiegazione:

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 byte


100*
.
$.>`¶
A`2

Provalo online! Modifica: salvato 2 byte grazie a @ovs, sebbene l'ultima riga ora includa una nuova riga. Spiegazione:


100*

Inserisci 100 caratteri.

.
$.>`¶

Sostituisci ogni personaggio con il numero di caratteri fino a incluso quel personaggio, più una nuova riga.

A`2

Rimuovi tutte le voci che contengono a 2.


Funziona . $.>`¶per la seconda fase?
Ovs,

@ovs Avevo avuto qualcosa di più complicato prima e sono passato a L$evitare una nuova linea principale, quindi non avevo realizzato che potevo tornare indietro, grazie.
Neil,


4

Wolfram Language (Mathematica) , 42 byte

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

Provalo online!

La sequenza aritmetica 1, 19/9, 29/9, 39/9, ... cresce alla giusta velocità che prendendo il soffitto salta tutti i numeri che terminano in 2. Quindi eliminiamo da 20 a 29 Dropeseguendo il ping dei valori agli indici da 18 a 26.


Non so se il consenso sia che Printsia necessario, ma a chi importa davvero, comunque.
Misha Lavrov,

[...] ma a chi importa davvero, comunque. - quello è lo spirito ...
Jonathan Frech,

Fai \[LeftCeiling]e \[RightCeiling]conta davvero come un singolo byte :)
user6014

@ user6014 Li sto contando come i 3 byte che occupano in Unicode, ma è ancora un po 'più economico di un Ceilingcomando reale .
Misha Lavrov,

@MishaLavrov Sembra giusto! Soluzione pulita.
user6014


4

Powershell, 19 byte

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

Questo script mostra valore null invece di "numeri con 2 all'interno" e risolve completamente l'attività "il numero 2 non dovrebbe apparire in nessun punto della sequenza".

Produzione:

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 (l'output non contiene valori null), 24 byte

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


4

Z80Golf , 49 48 byte

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

Provalo online!

Montaggio:

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

Salvato un byte con il repeat_loopsalto


4

Python 3 , 53 51 50 49 46 byte

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

Provalo online!

Non è il linguaggio più forte per questo compito, ma sono nuovo al golf.

Grazie ai commentatori per i loro consigli!


Benvenuti in PPCG! Puoi farlo arrivare a un round 50 eliminando lo spazio prima di if.
ElPedro,

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

In alternativa, basato su una delle risposte di Python 2:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW

@JosiahRyanW Non ero a conoscenza della stampa implicita, grazie!
Gigaflop

1
'2'in str(n)or print(n)è più corto di una guardia di comprensione.
Jonathan Frech,

4

Tcl , 44 byte

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

Provalo online!


Tcl , 47 byte

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

Provalo online!

Tcl , 50 byte

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

Provalo online!



È possibile sostituire il test con un regexp: ![regexp 2 [incr i]]per -3 byte
David

@david Com'è stato possibile non avere la soluzione suggerita da te per usare espressioni regolari? Grazie.
sergiol,


3

Bash , 31 byte

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

Provalo online!

Grazie a Digital Trauma per l'anello corto.


1
Benvenuti in PPCG! Che ne dici echo $iinvece di printf? O ancora meglio printf %d\\n {1..100}|grep -v 2?
Trauma digitale

si, come no. aggiornerò la mia risposta.
chetone,

sto imparando in realtà non so molto grazie a proposito.
chetone,

Ho appena battuto il mioecho {1..100}|tr ' ' \\n|grep -v 2
Mark Perryman il

-1 byte se si utilizza sed /2/dinvece di grep -v 2.
Ruslan,

3

ORK , 1092 byte

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

Provalo online!

O bjects R K ool. L'output è un elenco di numeri delimitato da spazi.

Questo si traduce (approssimativamente) nel seguente pseudocodice:

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

Come puoi vedere, tutto viene fatto usando oggetti, comprese le funzioni matematiche e IO di base (tramite il matematico incorporato e le classi di scriba). Solo intere funzioni possono essere ripetute, il che spiega la necessità di un oggetto con due funzioni per svolgere il lavoro.


3

MathGolf , 7 6 byte

♀╒Ç{2╧

Provalo online!

Spiegazione

♀╒       Push 100 and convert to 1-based range ([1,2,...,100])
  Č{     Inverse filter by block
    2╧   Does the number contain 2?


3

PHP 7.1, 40 byte

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

stampa numeri separati da caratteri di sottolineatura. Corri con -nro provalo online .


Buon uso del comportamento stravagante di PHP per separare i numeri, lol
Roberto Maldonado,

1
Quello di preg_filter()base è interessante. (Non ho mai usato quella funzione 🤫.) Quella sarebbe più breve con preg_grep(): <?=join(_,preg_grep("/2/",range(1,100),1));.
Manatwork


2

Brainfuck , 176 byte

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

Provalo online!

Più breve è sicuramente possibile. Questo genera i numeri 1,3,4,5,6,7,8,9e0,1,3,4,5,6,7,8,9 . Prima genera ogni numero nel primo elenco, quindi genera ogni combinazione del primo e del secondo elenco, quindi stampa solo100 .

Spiegazione:

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

Questa è stata una sfida divertente! Ed è una sfida in cui la mia lingua può fare bene.

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

Scorre tutti i valori da 1 a 100, producendo quelli che non ne hanno 2, separati da una nuova riga.

Puoi provarlo su http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99

Ungolfed:

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

La {@/}si usa per chiudere la {@for ...}e {@if ...}, ma è facoltativo.
Durante la compilazione in PHP, aggiunge la chiusura necessaria.


Se sei curioso, il codice di golf risulta in questo codice 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
};};

Dove $FN['array_flat']è definito al di fuori di questo codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.