Exibir números que faltam 2's


22

Exiba números de cem a cem (em ordem crescente), mas o número 2 não deve aparecer em nenhum lugar da sequência. Então, por exemplo, os números dois ( 2) ou vinte e três (23 ) não devem estar na sequência.

Aqui está um exemplo de saída, com novas linhas separando os 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

7
Eu suponho que os critérios vencedores são código-golfe, certo?
Luis felipe De jesus Munoz

4
Nosso site não funciona da mesma maneira que outros sites da rede Stack Exchange. Em relação às respostas aceitas, leve em consideração este comentário de Jonathan Allan . E por favor, adicione um critério vencedor.
Arnauld

1
Posso sugerir o uso da Sandbox no futuro para obter feedback sobre seus desafios antes de postar?
Jo rei

1
@Monolica Se a resposta mais curta vencer, você precisará da etiqueta [code-golf]. Aqui está uma lista de todas as tags de critério vencedor disponíveis para referência futura.
Kevin Cruijssen

4
@ user202729 A restrição arbitrária não é bem-vinda, não é permitida.
Jonathan Frech

Respostas:



26

Táxi , 2399 2391 2370 1783 1773 1706 bytes

-8 bytes para perceber que, em vez de deixar um determinado passageiro no Sunny Side Park para sempre, vale mais a pena jogá-lo fora da Riverview Bridge. Ah, que cidade adorável é essa.

-21 bytes por comentar que estupidamente deixei em.

-587 bytes, simplesmente mudando todo o caminho que eu fiz sobre isso (aparentemente, um caminho mais curto é por aritmética; a divisão de números inteiros [17, 27, 37, 47, ...] por 9 produz a sequência, mas você precisa pular o Você mesmo.)

-17 bytes para a conclusão de que qualquer string entre aspas sem espaço não precisa de aspas, afinal (obrigado Jo King!).

-67 bytes para perceber que as quebras de linha são opcionais.

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]

Experimente online!

Este não está me vencendo nenhuma competição de código de golfe em breve, mas decidi experimentar o esolang Taxi.

O táxi é um esolang em que toda a programação é feita ao pegar e deixar passageiros em várias paradas na cidade fictícia de Townsburg. Obviamente, seu táxi às vezes fica sem combustível; portanto, você também precisa visitar postos de gasolina de vez em quando e pagar usando os créditos que recebe como tarifa (nesse caso, só preciso parar para abastecer - em Go More - uma vez por iteração de loop!).

Usei alguns truques que reduzem um pouco o tamanho do arquivo, como reformular instruções , east 1st left, 2nd rightcomo e 1 l 2 rremover a palavrathe onde é opcional e usar a rota menos complicada para todos os meus destinos (não necessariamente o caminho mais curto).

Eu odeio essa solução mais curta do que a que eu originalmente criei. Essa solução aqui em baixo é uma maneira mais geral de realizar a tarefa, que pode começar e terminar onde você quiser. Aqui está, na sua totalidade.

2245 bytes (muito mais geral)

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]

Experimente online!

E se a mega-trapaça for permitida, essa será bem menor do que as duas últimas.

456 bytes (totalmente trapaça)

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.

Experimente online!


Essa coisa de citar é útil, obrigado. No entanto, eu discordo da coisa "não precisa ir à garagem do táxi". É permitido sair com um erro? Não consigo encontrar um bom conjunto de regras gerais sobre isso.
JosiahRyanW

Sim, geralmente STDERR é ignorado. Meta relevante
Jo King

Algumas das minhas respostas poderiam se beneficiar disso.
JosiahRyanW

22

Python 2 , 39 bytes

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

Experimente online!

Usa operações aritméticas apenas para gerar números sem 2's.

O valor que k segue a progressão aritmética 17, 27, 37, 47, ..., que quando dividida pelo piso por 9 fornece 1,3,4,5,6,7,8,9,10,11,13,14,...números que não terminam em 2. Para pular 20 a 29, as saídas são aumentadas em 10 além de um determinado limite.


14

JavaScript (ES6), 43 bytes

Retorna a sequência como uma sequência separada por vírgula.

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

Experimente online!

Por que fazer dessa maneira?

Podemos iterar de 1 a 100 e testar cada número com /2/.test(n), o que é uma afirmação bastante concisa. Mas nesse cenário, teríamos que lidar com entradas vazias com algo como (/2/.test(n)?'':...), o que adiciona mais alguns bytes.

Por exemplo, isso funcionaria para 45 bytes :

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

Ou isso funcionaria para 44 bytes , se uma vírgula inicial for aceitável:

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

Em suma (e até prova em contrário), é mais curto pular imediatamente todos os valores de n que contêm um 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

1
Isso é tão legal!
Emigna

1
41 bytes usando seu truque, se pudermos ter uma vírgula à esquerda.
Oliver

12

R , 19 bytes

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

Experimente online!


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

2
Ha - foi isso que tentei no começo, mas v=Ftambém porque, obviamente, pensei comigo mesma: quero os valores e não os índices ... duh!
ngm

A inversão da própria expressão regular é um byte mais curto (neste caso).
ngm

Não funciona, ainda deixa 2s passar. Você precisaria o ^[^2]*$que é, hum, não mais curto.
precisa saber é

4
O que, devemos verificar nossas respostas agora?
ngm


10

Perl 6 , 22 bytes

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

Experimente online!

Provavelmente existe uma maneira melhor de fazer o bloco de código, mas não consegui encontrar um advérbio de regex para inverter a correspondência


remova os colchetes ao redor dos números. Caso contrário, está tudo bem.
Monolica

@Monolica Fixed
Jo King

1
@ Monolica Parece um pouco estranho que você tenha destacado minha resposta como não sendo permitida a impressão como uma lista, onde tantas outras respostas o fazem. Por outro lado, não custa-me qualquer bytes, então o que
Jo rei

7

PowerShell , 22 16 bytes

1..100-notmatch2

Experimente online!

-6 bytes graças ao mazzy

Gera o intervalo 1para e 100, em seguida, retira os objetos onde eles fazem -notmatcho número 2. A execução de -notmatchum array como esse funciona como um filtro no array. Cada item é deixado no pipeline e a saída está implícita.


? 1..100-notmatch2
Mazzy

@mazzy Claro, por que não pensei nisso? Obrigado!
AdmBorkBork

6

Haskell , 48 33 31 bytes

Obrigado @ JonathanFrech por quinze bytes salvos e @ xnor por mais dois! Perdi um grande golfe e não percebi que main=print$poderia ser omitido.

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

Experimente online!

Facilmente estendido alterando o 100. Especifica todos os números e mantém apenas aqueles sem a '2'.


Veja isto ; o main=print$não é necessário. Você testou seu código? Eu não acho que elem'2'é uma sintaxe válida. Por que map? Simplesmente filter(not.elem '2'.show)[1..100]faz o trabalho.
Jonathan Frech

@ JonathanFrech Wow, perdeu isso. : / Nenhuma pista para onde foi esse espaço! É lá no TIO ...
Khuldraeseth na'Barya

2
Haskell tem notElempara not.elem, mas ainda mais curto é 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);}

Experimente online.

Explicação:

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

Experimente online! Editar: salvou 2 bytes graças a @ovs, embora a última linha agora inclua uma nova linha. Explicação:


100*

Insira 100 caracteres.

.
$.>`¶

Substitua cada caractere pelo número de caracteres até e incluindo esse caractere, além de uma nova linha.

A`2

Remova todas as entradas que contêm um 2.


Funciona . $.>`¶para o segundo estágio?
ovs 03/10

@ovs Eu já tinha algo mais complicado antes e mudei para L$evitar uma nova linha líder, então não tinha percebido que poderia voltar, obrigado.
Neil

4

Stax , 6 bytes

Ç░τ╒╜h

Execute e depure

Descompactado, não jogado e comentado, parece com isso.

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

Execute este


4

Wolfram Language (Mathematica) , 42 bytes

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

Experimente online!

A sequência aritmética 1, 19/9, 29/9, 39/9, ... cresce na velocidade certa de que, tomando o teto, pule todos os números que terminam em 2. Então, nos livramos de 20 a 29, fazendo Dropping nos valores nos índices 18 a 26.


Não sei se o consenso é de que o Printnecessário é, mas quem realmente se importa, de qualquer maneira.
Misha Lavrov

[...] mas quem realmente se importa, de qualquer maneira. - esse é o espírito ...
Jonathan Frech 03/10

Fazer \[LeftCeiling]e \[RightCeiling]realmente contam como um único byte :)
user6014

@ user6014 Estou contando-os como os 3 bytes que ocupam no Unicode, mas ainda é um pouco mais barato que um Ceilingcomando real .
Misha Lavrov

@MishaLavrov Parece justo! Solução pura.
usar o seguinte comando


4

Powershell, 19 bytes

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

Este script mostra valor nulo em vez de 'números com 2 dentro' e resolve completamente a tarefa 'número 2 não deve aparecer em nenhum lugar da sequência'.

Saída:

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 (saída não contém valores nulos), 24 bytes

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

4

sh + coreutils, 16 caracteres

seq 100|sed /2/d

Gera sequência de 1 a 100 (inclusive) e exclui todas as linhas que possuem '2' nelas.


Este código é idêntico ao da Digital Trauma .
Ruslan #

Oh, merda, não vi essa, mesmo que eu tenha verificado. Devo excluir isso porque o meu foi postado mais 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

Experimente online!

Montagem:

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

Salvo um byte com o repeat_loopsalto


4

Python 3 , 53 51 50 49 46 bytes

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

Experimente online!

Não é o idioma mais forte para esta tarefa, mas sou novo no golfe.

Obrigado aos comentaristas por suas dicas!


Bem-vindo ao PPCG! Você pode reduzi-lo para uma rodada 50 excluindo o espaço antes da if.
ElPedro 3/10

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

Alternativamente, com base em um dos Python 2 respostas:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW

@JosiahRyanW Eu não estava ciente da impressão implícita, obrigado!
Gigaflop 04/10/19

1
'2'in str(n)or print(n)é mais curto que um guarda de compreensão.
Jonathan Frech

4

Tcl , 44 bytes

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

Experimente online!


Tcl , 47 bytes

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

Experimente online!

Tcl , 50 bytes

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

Experimente online!



Você pode substituir seu teste por regexp: ![regexp 2 [incr i]]bytes -3
david

@ David Como foi possível que eu não vim com a solução sugerida por você para usar expressões regulares? Obrigado.
Sergiol # 23/18


3

Bash , 31 bytes

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

Experimente online!

Obrigado ao Digital Trauma pelo loop curto.


1
Bem-vindo ao PPCG! Que tal em echo $ivez do printf? Ou melhor ainda printf %d\\n {1..100}|grep -v 2?
Digital Trauma

Okay, certo. vou atualizar minha resposta.
cetona

estou aprendendo, na verdade, não sei muito bem, graças.
cetona

Apenas bate minhaecho {1..100}|tr ' ' \\n|grep -v 2
Mark Perryman

-1 byte se você usar em sed /2/dvez 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

Experimente online!

O bjeta R K ool. Saída é uma lista de números delimitada por espaço.

Isso se traduz (aproximadamente) no seguinte 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 você pode ver, tudo é feito usando objetos, incluindo funções básicas de matemática e E / S (por meio das classes matemáticas e de escriba incorporadas). Somente funções inteiras podem fazer um loop, o que explica a necessidade de um objeto com duas funções para fazer o trabalho.


3

MathGolf , 7 6 bytes

♀╒Ç{2╧

Experimente online!

Explicação

♀╒       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 bytes

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

imprime números separados por sublinhados. Corra com -nrou experimente online .


Utilização agradável de comportamento maluco do PHP para separar os números, lol
Roberto Maldonado

1
O preg_filter()baseado é interessante. (Eu nunca usei essa função 🤫.) Aquela seria mais curto com preg_grep(): <?=join(_,preg_grep("/2/",range(1,100),1));.
Manatwork # 3/18


2

brainfuck , 176 bytes

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

Experimente online!

Shorter é definitivamente possível. Isso gera os números 1,3,4,5,6,7,8,9e 0,1,3,4,5,6,7,8,9. Primeiro, gera cada número na primeira lista, depois gera todas as combinações da primeira e da segunda lista e, finalmente, imprime apenas 100.

Explicação:

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

Este foi um desafio divertido! E é um desafio em que meu idioma pode se sair bem.

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

Percorre todos os valores de 1 a 100, produzindo os que não possuem 2, separados por uma nova linha.

Você pode experimentá-lo http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99

Ungolfed:

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

O {@/}é usado para fechar o {@for ...}e {@if ...}, mas é opcional.
Ao compilar para PHP, ele adiciona o fechamento necessário.


Se você estiver curioso, o código golfed resulta neste código 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
};};

Onde $FN['array_flat']é definido fora deste código.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.