Mostrar números que carecen de 2

22

Muestra los números del uno al cien (en orden creciente), pero el número 2 no debería aparecer en ninguna parte de la secuencia. Entonces, por ejemplo, los números dos ( 2) o veintitrés ( 23) no deberían estar en la secuencia.

Aquí hay un ejemplo de salida, con líneas nuevas que separan los números:

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
fuente
77
Supongo que el criterio ganador es el código de golf, ¿verdad?
Luis felipe De jesus Munoz
44
Nuestro sitio no funciona de la misma manera que otros sitios de la red de Stack Exchange. Con respecto a las respuestas aceptadas, tenga en cuenta este comentario de Jonathan Allan . Y por favor agregue un criterio ganador.
Arnauld
1
¿Puedo sugerirle usar Sandbox en el futuro para obtener comentarios sobre sus desafíos antes de publicar?
Jo King el
1
@Monolica Si gana la respuesta más corta, necesitará la etiqueta [code-golf]. Aquí hay una lista de todas las etiquetas de criterios ganadores disponibles para referencia futura.
Kevin Cruijssen
44
@ user202729 La restricción arbitraria no es bienvenida, no está prohibida.
Jonathan Frech

Respuestas:

12

05AB1E , 6 bytes

тLʒ2å_

Pruébalo en línea!

Explicación

тL       # push [1 ... 100]
  ʒ      # filter, keep only elements that
   2å_   # does not contain 2
Emigna
fuente
26

Taxi , 2399 2391 2370 1783 1773 1706 bytes

-8 bytes por darse cuenta de que, en lugar de dejar a cierto pasajero en Sunny Side Park para siempre, vale la pena echarlos del puente Riverview. Ah, qué pueblo tan encantador es este.

-21 bytes para sacar un comentario que estúpidamente dejé.

-587 bytes simplemente cambiando toda la forma en que hice esto (al parecer, una forma más corta es por aritmética; la división entera [17, 27, 37, 47, ...] entre 9 produce la secuencia, pero debes saltarte el 20's tu mismo.)

-17 bytes para darse cuenta de que cualquier cadena entre comillas sin espacio no necesita comillas después de todo (¡gracias Jo King!).

-67 bytes para darse cuenta de que los saltos de línea son opcionales.

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]

Pruébalo en línea!

Este no me está ganando ninguna competencia de código de golf en el corto plazo, pero decidí probar el taxi esolang.

Taxi es un esolang en el que toda la programación se realiza recogiendo y dejando pasajeros en varias paradas en la ciudad ficticia de Townsburg. Por supuesto, su taxi a veces se quedará sin gasolina, por lo que también debe visitar las estaciones de servicio de vez en cuando y pagar con los créditos que recibe como tarifa (en este caso, solo necesito parar por gasolina, en Go More) una vez por iteración de bucle!).

Utilicé algunos trucos que reducen un poco el tamaño del archivo, como reformular instrucciones east 1st left, 2nd rightcomo e 1 l 2 r, eliminar la palabra thedonde es opcional y usar la ruta menos complicada hacia todos mis destinos (no necesariamente la ruta más corta).

Odio esta solución más corta más que la que originalmente se me ocurrió. Esta solución aquí abajo es una forma más general de lograr la tarea, que podría comenzar y terminar en cualquier lugar que desee. Aquí está en su totalidad.

2245 bytes (mucho más general)

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]

Pruébalo en línea!

Y si se permite el mega engaño, este es mucho más corto que cualquiera de los dos últimos.

456 bytes (totalmente trampa)

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.

Pruébalo en línea!

JosiahRyanW
fuente
Esa cita es útil, gracias. Sin embargo, no estoy de acuerdo con lo de "no tengo que ir al Taxi Garage". ¿Se permite salir con un error? No puedo encontrar un buen conjunto de reglas generales sobre esto.
JosiahRyanW
Sí, generalmente se ignora STDERR. Meta relevante
Jo King
Algunas de mis respuestas podrían beneficiarse de eso.
JosiahRyanW
22

Python 2 , 39 bytes

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

Pruébalo en línea!

Utiliza operaciones aritméticas solo para generar números sin 2.

El valor ksigue la progresión aritmética 17, 27, 37, 47, ..., que cuando se divide en el piso entre 9 da 1,3,4,5,6,7,8,9,10,11,13,14,...los números de conteo que no terminan en 2. Para saltear 20 a 29, las salidas se incrementan en 10 más allá de cierto umbral.

xnor
fuente
14

JavaScript (ES6), 43 bytes

Devuelve la secuencia como una cadena separada por comas.

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

Pruébalo en línea!

¿Por qué hacerlo de esta manera?

Podríamos iterar de 1 a 100 y probar cada número con /2/.test(n), que es una declaración bastante concisa. Pero en este escenario, tendríamos que manejar entradas vacías con algo así (/2/.test(n)?'':...), que agrega un par de bytes más.

Por ejemplo, esto funcionaría para 45 bytes :

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

O esto funcionaría para 44 bytes , si una coma inicial es aceptable:

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

Con todo (y hasta que se demuestre lo contrario), resulta más corto omitir de inmediato todos los valores de n que contienen un 2 .

Comentado

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
fuente
1
¡Esto es genial!
Emigna
1
41 bytes usando tu truco si pudiéramos tener una coma inicial.
Oliver
12

R , 19 bytes

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

Pruébalo en línea!

ngm
fuente
grep(2,1:100,inv=T)para 19.
J.Doe
2
Ja, esto fue lo que probé al principio pero v=Ftambién porque, obviamente, pensé para mí mismo, quiero los valores y no los índices ... ¡duh!
ngm
Invertir la expresión regular en sí es un byte más corto (en este caso).
ngm
No funciona, todavía deja pasar 2 segundos. Necesitarías ^[^2]*$cuál es, um, no más corto.
J.Doe
44
¿Qué, se supone que debemos verificar nuestras respuestas ahora?
ngm
10

Perl 6 , 22 bytes

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

Pruébalo en línea!

Probablemente haya una mejor manera de hacer el bloque de código, pero no pude encontrar un adverbio regex para invertir la coincidencia

Jo King
fuente
Quite los corchetes alrededor de los números. De lo contrario, está bien.
Monolica
@Monolica Fixed
Jo King
1
@Monolica Parece un poco extraño que hayas señalado mi respuesta ya que no está permitido imprimirla como una lista, donde tantas otras respuestas lo hacen. Por otro lado, no me cuesta ningún byte, así que lo que sea
Jo King
7

PowerShell , 22 16 bytes

1..100-notmatch2

Pruébalo en línea!

-6 bytes gracias a mazzy

Genera el rango 1a 100, luego extrae los objetos donde hacen -notmatchel número 2. Ejecutar -notmatchcontra una matriz como esta actúa como un filtro en la matriz. Cada elemento se deja en la tubería y la salida es implícita.

AdmBorkBork
fuente
? 1..100-notmatch2
mazzy
@mazzy Por supuesto, ¿por qué no pensé en eso? ¡Gracias!
AdmBorkBork
6

Haskell , 48 33 31 bytes

Thanks @JonathanFrech for fifteen bytes saved, and @xnor for another two! I missed a big golf and didn't realize main=print$ can be omitted.

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

Try it online!

Easily extended by changing the 100. Stringifies all the numbers and keeps only those without a '2'.

Khuldraeseth na'Barya
fuente
See this; the main=print$ is not necessary. Have you tested your code? I do not think that elem'2' is valid syntax. Why map? Simply filter(not.elem '2'.show)[1..100] does the job.
Jonathan Frech
@JonathanFrech Wow, missed that. :/ No clue where that space went! It's there in the TIO...
Khuldraeseth na'Barya
2
Haskell has notElem for not.elem, but even shorter is all(/='2').
xnor
6

Japt, 7 bytes

Lõs kø2

Lõs kø2     Full Program
Lõs         Range ["1"..."100"] (numbers are casted to string)
    k       Remove
     ø2     anything that contains "2"

Try it online!

Luis felipe De jesus Munoz
fuente
5

Java 10, 67 bytes

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

Try it online.

Explanation:

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
Kevin Cruijssen
fuente
5

Retina, 19 17 bytes


100*
.
$.>`¶
A`2

Try it online! Edit: Saved 2 bytes thanks to @ovs, although the last line now includes a newline. Explanation:


100*

Insert 100 characters.

.
$.>`¶

Replace each character with the number of characters up to and including that character, plus a newline.

A`2

Remove all entries that contain a 2.

Neil
fuente
Does . $.>`¶ work for the second stage?
ovs
@ovs I had had something more complicated before and switched to L$ to avoid a leading newline, so I hadn't realised I could switch back, thanks.
Neil
4

Stax, 6 bytes

Ç░τ╒╜h

Run and debug it

Unpacked, ungolfed, and commented, it looks like this.

AJ  10 squared
f   output each value in [1 .. n] satisfying the following filter
 E  get array of decimal digits in number
 2#     count the number of 2s
 !  logical not

Run this one

recursive
fuente
4

Wolfram Language (Mathematica), 42 bytes

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

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 Dropping the values at indices 18 through 26.

Misha Lavrov
fuente
No sé si el consenso es que el Print is necessary, but who really cares, anyway.
Misha Lavrov
[...] pero a quién le importa, de todos modos. -- that's the spirit ...
Jonathan Frech
Hacer \[LeftCeiling]y\[RightCeiling] really count as a single byte :)
user6014
@ user6014 Los cuento como los 3 bytes que ocupan en Unicode, pero sigue siendo un poco más barato que un real Ceiling command.
Misha Lavrov
@MishaLavrov Sounds fair ! Neat solution.
user6014
4

C (GCC), 62 55 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!

Asleepace
fuente
1
55 bytes .
Jonathan Frech el
@ JonathanFrech gracias, eso es inteligente!
Asleepace
4

Powershell, 19 bytes

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

Este script muestra un valor nulo en su lugar 'números con 2 adentro' y resuelve completamente la tarea 'el número 2 no debería aparecer en ninguna parte de la secuencia'.

Salida:

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 (la salida no contiene valores nulos), 24 bytes

1..100-split'.*2.*'-ne''
mazzy
fuente
4

sh + coreutils, 16 caracteres

seq 100|sed /2/d

Genera secuencia de 1 a 100 (inclusive) y elimina cualquier línea que tenga '2' en ellas.

therealfarfetchd
fuente
Este código es idéntico a la respuesta de Digital Trauma .
Ruslan
oh mierda, no vi esa, aunque lo revisé. ¿Debo eliminar esto ya que el mío se publicó más tarde?
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

Pruébalo en línea!

Montaje:

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

Guardado un byte con el repeat_loopsalto

Logern
fuente
4

Python 3 , 53 51 50 49 46 bytes

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

Pruébalo en línea!

No es el lenguaje más fuerte para esta tarea, pero soy nuevo en el golf.

Gracias a los comentaristas por sus consejos!

Gigaflop
fuente
Bienvenido a PPCG! Puede reducirlo a una ronda 50 eliminando el espacio antes de if.
ElPedro
[print(n)for n in range(1,101)if"2"not in str(n)]trabajos.
JosiahRyanW
Alternativamente, basado en una de las respuestas de Python 2:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW
@JosiahRyanW No estaba al tanto de la impresión implícita, ¡gracias!
Gigaflop
1
'2'in str(n)or print(n) is shorter than a comprehension guard.
Jonathan Frech
4

Tcl, 44 bytes

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

Try it online!


Tcl, 47 bytes

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

Try it online!

Tcl, 50 bytes

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

Try it online!

sergiol
fuente
# Tcl, 49 bytes time {if [string f 2 [incr i]]==-1 {puts $i}} 100Failed outgolf!
sergiol
You could replace your test with a regexp: ![regexp 2 [incr i]] for -3 bytes
david
@david How was it possible I didn't come with the solution suggested by you of using regular expressions? Thanks.
sergiol
3

Bash, 31 bytes

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

Try it online!

Thanks to Digital Trauma for short loop.

ketone
fuente
1
Welcome to PPCG! How about echo $i instead of the printf? Or even better printf %d\\n {1..100}|grep -v 2?
Digital Trauma
yeah right. i ll update my answer.
ketone
i am learning actually i don't know that much btw thanks.
ketone
Simplemente supera a miecho {1..100}|tr ' ' \\n|grep -v 2
Mark Perryman
-1 byte si usa en sed /2/dlugar de 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

Pruébalo en línea!

O objetos R K ool. La salida es una lista de números delimitada por espacios.

Esto se traduce (aproximadamente) al siguiente pseudocódigo:

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

Como puede ver, todo se hace utilizando objetos, incluidas las funciones básicas de matemática e IO (a través de las clases de matemático y escriba incorporadas). Solo las funciones completas pueden recorrer, lo que explica la necesidad de un objeto con dos funciones para hacer el trabajo.

JosiahRyanW
fuente
3

MathGolf , 7 6 bytes

♀╒Ç{2╧

Pruébalo en línea!

Explicación

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

PHP 7.1, 40 bytes

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

imprime números separados por guiones bajos. Ejecutar -nro probarlo en línea .

Titus
fuente
Nice use of PHP's wacky behavior to separate the numbers, lol
Roberto Maldonado
1
The preg_filter() based one is interesting. (I never used that function. 🤫) That one would be shorter with preg_grep(): <?=join(_,preg_grep("/2/",range(1,100),1));.
manatwork
2

Red, 44 bytes

repeat n 100[unless find form n"2"[print n]]

Try it online!

Uses unless instead of if not, because why not? :)

Galen Ivanov
fuente
2

brainfuck, 176 bytes

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

Try it online!

Shorter is definitely possible. This generates the numbers 1,3,4,5,6,7,8,9 and 0,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 just 100.

Explanation:

---------   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
Jo King
fuente
2

SimpleTemplate, 51 bytes

This was a fun challenge! And it is a challenge where my language can do well.

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

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:

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

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:

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

Where $FN['array_flat'] is defined outside of this code.

Ismael Miguel
fuente