Concatenando n com n + 1


44

Introdução

A sequência OEIS A127421 é a sequência de números cuja expansão decimal é uma concatenação de 2 números não negativos crescentes consecutivos. Simplificando, todo número na sequência é formado reunindo n com n + 1 para algum valor inteiro não negativo de n . Os primeiros termos são:

1, 12, 23, 34, 45, 56, 67, 78, 89, 910, 1011, 1112, 1213, 1314, 1415, 1516, 1617, 1718, 1819, 1920, 2021, 2122, 2223, 2324, 2425, 2526, 2627, 2728, 2829, 2930, 3031, 3132, 3233, 3334, 3435, 3536, 3637, 3738, 3839, 3940, 4041, 4142, 4243, 4344, 4445, 4546,…

Desafio

Dado um único número inteiro positivo n , imprima as primeiras n entradas da sequência OEIS A127421 em ordem crescente.

  • A entrada e a saída podem estar em qualquer formato aceitável . Seqüências de caracteres ou números são adequados para a saída.
  • Zeros à esquerda não são permitidos.
  • É permitido um programa ou função completo.
  • Para os propósitos deste desafio, n será positivo e menor que 100.
  • As brechas padrão não são permitidas por padrão.
  • Esta questão é código de golfe, portanto, a menor contagem de bytes vence.
  • Aqui estão algumas amostras de entrada e saída:

    1 => 1
    2 => 1, 12
    3 => 1, 12, 23
    10 => 1, 12, 23, 34, 45, 56, 67, 78, 89, 910
    

Se você tiver alguma dúvida, não hesite em perguntar. Boa sorte.

PS, este é o meu primeiro desafio, então espero que tudo isso faça sentido.

EDIT: Removida a restrição de saída para permitir números ou seqüências de caracteres.


1
Pode ser 0 indexado?
Jo Rei

3
Ninguém disse isso ainda, mas bem-vindo ao PPCG! Primeira pergunta agradável, não muito difícil, ainda não completamente trivial quer, e há um número de diferentes abordagens
Jo Rei

3
Após 7 dias, aceitarei a resposta mais curta que atenda a todos esses critérios. Por que é necessário que o desafio termine?
Erik the Outgolfer

2
Atualmente, tendemos a não aceitar uma resposta, porque desencoraja novas postagens de respostas. Eu suponho que você tome velhos desafios como um modelo (que também é desencorajado) Ver coisas-a-avoid-quando-escrita-desafios
user202729

2
@ Dennis Ok, vou remover a data do desafio; talvez eu aceite quando não houver mais novas respostas.
Amphibological

Respostas:


13

Gelatina , 3 bytes

ŻVƝ

Um link monádico que aceita um número inteiro que gera uma lista de números inteiros

Experimente online!

Quão?

ŻVƝ - Link: integer       e.g. 59
Ż   - zero-range               [0,1,2,3,4,5,6, ... ,58,59]
  Ɲ - apply to each pair: i.e: [0,1] or [5,6]  or  [58,59]
 V  -   evaluate* jelly code   1     or 56     or  5859
    -                       -> [1,12,23,45,56, ... 5859]

* When given a list V actually joins the Python string values and evaluates that
  ...so e.g.: [58,59] -> ['58','59'] -> '5859' -> 5859

Dennis ultrapassado!
Okx 05/07/19

10

R , 32 bytes

strtoi(paste0((x=1:scan())-1,x))

Experimente online!

Outgolfed by MickyT , então vote nessa resposta!


Houve uma edição para permitir seqüências de caracteres ... não há necessidade de strtoi!
214 JayCe Jay

2
@ JayCe, é necessário retirar a liderança 0da primeira saída.
Giuseppe

você não poderia remover o zero inicial terminando com, em [-1]vez de usar, strtoiou isso falha em alguns casos extremos?
JDL

O @JDL strtoiestá sendo usado para converter de "01"para 1porque paste0retornará c("01","12","23","34",...)e não podemos retornar "01".
Giuseppe

1
@CriminallyVulgar infelizmente isso irá falhar para entrada de1
Giuseppe



7

Cubix , 19 bytes

I.1.W)>OSo;u.uO;@!-

Experimente online!

Isso envolve o cubo da seguinte maneira

    I .
    1 .
W ) > O S o ; u
. u O ; @ ! - .
    . .
    . .

Assista

Ainda temos um pouco de espaço para brincar, mas no momento

  • W redirecionar para a face superior indo para baixo
  • I1> configure a pilha com a entrada e 1, em seguida, redirecione para o loop principal
  • OSo;u saída da parte superior da pilha, adicione espaço para empilhar, produzir, remover e uturn
  • -!@;Ou)subtraia TOS da entrada, se 0 interromper o resultado pop, produza TOS, uturn e incrementa TOS. De volta ao loop principal.

7

Perl 6 , 19 18 bytes

{(^$_ Z~1..$_)X+0}

Experimente online!

Bloco de código anônimo que fecha o intervalo de 0 a n-1 com 1 a n usando o operador de concatenação e adiciona 0 a cada elemento para forçá-lo a um número e remover os 0s iniciais.


5

R , 30 29 bytes

Um byte extra graças a @ Giuseppe

10^nchar(n<-1:scan())*(n-1)+n

Experimente online!

Uma solução principalmente matemática, exceto para usar nchar()em vez de floor(log10()). Fiquei realmente surpreso que veio mais curto que a versão string .


29 bytes! bom trabalho nisso, eu nunca teria pensado nisso!
Giuseppe

@ Giuseppe obrigado pelo byte extra.
MickyT



4

Python 2 , 42 41 bytes

f=lambda n:n-1and f(n-1)+[`n-1`+`n`]or[1]

Experimente online!

Função recursiva que retorna uma lista mista de seqüências de caracteres e números inteiros


Você pretendia editar a descrição original "Função anônima que retorna uma lista"?
Esolanging Fruit

@EsolangingFruit Oopsie, corrigido! Obrigado
Jo King

Talvez esteja faltando alguma coisa, mas isso não parece ter '12' como o segundo elemento.
ElPedro

2
@ElPedro Isso pode ser corrigido por salvar um byte comn and
Mr. Xcoder

1
Não é sempre que uma correção poupa bytes :-)
ElPedro


4

Flor , 88 bytes

rule e<int x>[1(x)]=>[1(x-1),2(str(x)+str(x+1))|1->2];rule c[1(0),2|1->2]=>[2("12")];e!c

Blossom é uma linguagem de programação gráfica em que estou trabalhando. Ele pode receber apenas gráficos como entradas, portanto, este programa espera um gráfico compreendendo um único nó com seu rótulo como um número inteiro. Ele retorna um gráfico das arestas conectadas para formar o mais próximo possível de uma matriz que eu possa obter, e o gráfico resultante é impresso na saída.

Uma versão não minificada do código é esta:

rule expand <int x>
    [ 1 (x) ]
 => [ 1 (x-1), 2(str(x)+str(x+1)) | 1->2 ]
where x > 0;

rule clean
    [ 1 (0), 2 ("12") | 1->2 ]
 => [ 2 ("12") ];

expand! clean

Ele define duas regras: uma chamada expand, que (enquanto houver um nó com um rótulo com valor inteiro no gráfico atual) cria outro nó com seu incremento concatenado e reduz o valor. Ele também cria uma aresta entre esses dois nós. Essa regra também tem a condição de que x é maior que 0.

Ele !executa essa regra pelo tempo em que puder ser aplicada no gráfico; nesse caso, ela será executada até que x seja 0. E então oclean regra removerá esse nó 0 e sua borda.

O Blossom não foi feito para jogar golfe, mas acho que não faz muito mal, considerando o que é. Atualmente, não há realmente uma maneira fácil de as pessoas testarem o código de floração (e o intérprete no qual estou trabalhando no momento não está completamente terminado e é um buggy), mas essa não é exatamente uma entrada concorrente!



3

Shakespeare , 703 bytes

Q.Ajax,.Ford,.Act I:.Scene I:.[enter Ajax and Ford]Ford:Open mind!Scene V:.Ajax:You is the sum of thyself the sum of myself the sum of a big bad fat old red pig a big bad fat old lie!Ford:Open mind!Is you nicer zero?Ajax:If so, you is twice the sum of the sum of twice thyself twice thyself thyself!If so,Let us Scene V!Ford:You a cat!Open heart!Scene X:.Ajax:You is the sum of thyself a pig!Is you worse than a cat?If so,let us Scene C.Remember thyself.You is the sum of the sum of a big old red cute rich cat a big old red cute joy a big old pig!Speak mind!You is a big old red cute rich cat!Speak mind!Recall!Ford:Open heart!You is the sum of thyself a joy!Open heart!Let us Scene X.Scene C:.[exeunt]

tente aqui

versão ungolfed

127421th Night.
Ajax, likes to read the stars.
Ford, someone Ajax can always count on.
Act I:.
Scene I: Ajax reads a star.
[enter Ajax and Ford]
Ford: Open your mind! 
Scene V: Ford counts what ajax has learned.
Ajax: you are the sum of thyself and the sum of myself and the sum of a big bad fat old red pig and a big bad fat old lie!
Ford: Open Your mind! Are you nicer than zero?
Ajax: If so, you are twice the sum of the sum of twice thyself and twice thyself and thyself! 
If so, Let us Scene V!
Ford: You are a cat! Open your heart!

Scene X: Ajax and Ford recall the nights.
Ajax: You are the sum of thyself and a pig! Are you worse than a cat? If so, Let us Scene C.
Remember thyself. 
You are the sum of the sum of a big old red cute rich cat and a big old red cute joy and a big old pig! 
Speak you mind!
You are a big old red cute rich cat! Speak your mind! Recall your finest hour!
Ford: Open your heart! You are the sum of thyself and a joy! Open your heart! Let us Scene X.
Scene C: Fin.
[exeunt]

3

Groovy , 35 bytes

{(0..<it)*.with{""+it+++it as int}}

Experimente online!

Eu vim no último minuto com a ideia de usar * .com em vez de .collect. Eu não tenho idéia do que it+++itanalisa, mas se é it++ + itou it + ++itambos fazem a mesma coisa. Tentei pensar em uma maneira de me livrar do <in .. <transformando-o em 1..it e decrementando, mas acho que não ficaria mais curto.


Bem-vindo ao PPCG; bom primeiro post! Em relação à análise de a+++b, este teste sugere que é analisado da esquerda para a direita, ou seja (a++)+b.
Jonathan Frech

3

C (gcc) , 44 43 bytes

f(i){i--&&printf(" %2$d%d"+5*!f(i),i+1,i);}

Experimente online!


@DLosc O %m$especificador de formato "indica a posição na lista de argumentos do argumento desejado, indexada a partir de 1" ( printf(3)página de manual) . É bastante útil desde que sua biblioteca C suporte!
ErikF

Obrigado ... mas ainda estou confuso por que %d%d(e mudar a ordem dos argumentos) não funciona. (Eu tentei, mas não sei por que ele não produz nenhuma saída.)
DLosc

@DLosc Se você alterar a cadeia de formato, certifique-se para alterar o desvio após ele (por exemplo, " %d%d"deve ter +3*!f(i), caso contrário, os +5 pontos deslocamento para o NUL no final da cadeia.)
ErikF

Oh, está bem - eu finalmente entendi: o "# 2, então # 1" é necessário porque, no caso base, a cadeia de formato reduzido se torna apenas "# 1" e por isso você precisa primeiro argumento printf para ser i+1, não i. Muito interessante.
DLosc

3

Pitão , 9 8 6 bytes

ms+`dh

Experimente online!

Explicação:

       - implicit output
m      - map function with argument d:
  +    -  concatenate
    d  -  argument d
   `   -  to string
     h -  into implicit d + 1
       - into Q (implicit input)

1
Welcom para PPCG! :)
Salsicha

@ Shaggy Obrigado, esta é a minha primeira vez fazendo isso.
u_ndefined

2

Gelatina , 4 bytes

ḶżRV

Experimente online!

Como funciona

ḶżRV  Main link. Argument: n

Ḷ     Unlength; yield [0, ..., n-1].
  R   Range; yield [1, ... n].
 ż    Zipwith; yield [[0, 1], ..., [n-1, n]].
   V  Eval; cast each array to string and evaluate, yielding integers.


2

05AB1E , 6 bytes

>GNJ,N

Experimente online!

Explicação

>G       # for N in [1 ... input]
  N      # push N
   J     # join stack
    ,    # print
     N   # push N (for next iteration)

LεD<ìï funcionaria para a mesma contagem de bytes, mas com saída da lista




2

Japonês -m , 6 5 bytes

ó2 ¬n

Experimente online!

Como sempre, conheça as bandeiras .

Descompactado e como funciona

-m       Convert to range and map...

Uó2 q n
Uó2      Construct [U, U+1]
    q    Join
      n  Convert to number

         Implicit output (Array is printed as comma-delimited values)

5 bytes . Não sei por óque não funciona aqui sem o 2.
Shaggy

Eu tenho 2 outras soluções de 5 bytes (ambas usando o mesmo método) que não usam um sinalizador, se alguém quiser dar uma facada neles.
Shaggy

Eu acho que 5 + 2 = 7 bytes por causa da bandeira?
u_ndefined 07/07


2

C # (Compilador interativo do Visual C #) , 103 71 64 56 bytes


Golfe Experimente online!

i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}

Ungolfed

i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
}

Código completo

Action<Int32> a = i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
    };

Int32[]
    testCases = new Int32[] {
        1,
        2,
        3,
        10,
    };

foreach( Int32[] testCase in testCases ) {
    WriteLine( $" Input: {testCase}\nOutput:" );
    a(testCase);
    WriteLine("\n");
}

Versões mais antigas:

  • v1.2, 64 bytes

    i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.1, 71 bytes

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.0, 103 bytes

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?",":"")}{x++*System.Math.Pow(10,$"{x}".Length)+x}");}

Lançamentos

  • v1.3 - - 8 bytes- Removido Consoleobrigado novamente a raznagul
  • v1.2 - - 7 bytes- Removido Systemgraças a raznagul
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- Solução inicial.

Notas

  • Nenhum

1
O C # Interactive Compiler possui importações estáticas para System.Console. Então você pode salvar 15 bytes removendo-o.
raznagul # 01

Direito! Hábito de ter que usar -los
auhmaan

Você também pode remover Console.: TIO
raznagul 4/18


2

ABAP, 101 bytes

Não é realmente uma linguagem de golfe, mas estou me divertindo muito com ela

WHILE x<w.
CLEAR z.
IF x=1.
WRITE x.
ELSE.
CONCATENATE y x INTO z.
WRITE z.
ENDIF.
y=x.
x=x+1.
ENDDO.

W é o termo de entrada, X é o contador de 1, Y é X-1 a partir da segunda passagem em diante, Z é uma string concatenada.


2

Powershell, 27 26 bytes

1.."$args"|%{"$p$_";$p=$_}

-1 byte: obrigado AdmBorkBork

Script de teste:

$f = {
1.."$args"|%{"$p$_";$p=$_}
}

&$f 1
""
&$f 2
""
&$f 3
""
&$f 10
""
&$f 46

1
Você pode salvar um byte 1.."$args".
AdmBorkBork



2

Javascript, 43 44,46,49,53 bytes

n=>[...Array(n)].map((_,a)=>~~(a+(a+1+"")))

Versões prévias :

n=>[...Array(n)].map((_,a)=>~~(a+(""+ ++a)))
n=>[...Array(n)].map((_,a)=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>parseInt(a+(""+ ++a)))

Economizei 3 bytes graças à solução do @ Shaggy (que é melhor que a minha) para remover .keys()


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.