O número Rien

38

A constante Champernowne é um número que é construído concatenando os primeiros nnúmeros, ntendendo ao infinito. Parece algo como isto:

0.123456789101112131415161718192021222324252627282930...

Agora, descreverei para você o número de Rien . Pode ser pensado como uma minimização da constante Champernowne como um número inteiro. Vou me referir ao número de Rien com os primeiros ndígitos como Ri ( n ). Isto é como formulá-lo:

  1. Os primeiros nnúmeros naturais (a sequência {1,2,3, ...}) são concatenados.
  2. Esse resultado é classificado de acordo com o valor do dígito. Assim 1..12seria 011111223456789.
  3. Como o número de Rien não pode ter zeros à esquerda, movemos todos os 0s para que sejam significativos, mantendo o número minimizado, resultando em, digamos 101111223456789,. Este é Ri ( n ), neste caso, Ri (12).

Aqui estão alguns resultados para Ri ( n ):

n     Ri ( n )
1 1
2 12
3 123
7 1234567
9 123456789
10 10123456789
15 101111111223344556789
34 10001111111111111222222222222223333333334444555666777888999
42 100001111111111111122222222222222233333333333333444444455556666777788889999
45 10000111111111111112222222222222223333333333333334444444444455555666677778888999999
55 100000111111111111111222222222222222233333333333333444444444444444455555555555566666777778888899999
100 100000000000111111111111111111112222222222222222222233333333333333333333444444444444444444445555555555555555555566666666666666666666777777777777777777778888888888888888888899999999999999999999
999100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Objetivo Dado um número 1 ≤ n<10000 como entrada (via argumentos, STDIN ou codificação física se o seu idioma não suportar entrada convencional), produza / retorne Ri ( n).

Este é um , portanto o código mais curto em bytes vence. Você pode usar um idioma que foi criado após este concurso, desde que não tenha sido feito para responder a esse desafio. (Claro, você pode usá-lo, se ele fornecer uma solução interessante, mas marque sua resposta como não concorrente.)

Implementação de referência

Eu testei isso no IE, então realmente não deveria haver um problema. Se não é um problema, há uma solução fácil: conseguir um navegador sã.

function min(n) {
  var seq = [];
  for(var i = 1; i <= n; i++) seq.push(i);
  seq = seq.join("").split("").map(Number);
  var to;
  if(seq.indexOf(1) >= 0) to = seq.splice(seq.indexOf(1), 1);
  seq.sort(function(a, b) {
    return a - b;
  });
  if(to) seq = to.concat(seq);
  return seq.join("");
}
t.onchange = t.onkeyup = function() {
  h.innerHTML = min(this.value)
}
* {
  font-family: Consolas, monospace;
}
input {
  border: 2px dotted #aaaaaa;
  border-radius: 5px;
  margin: 10px;
}
<input id="t" type="number">
<div id="h">


Entre os melhores

O snippet de pilha na parte inferior desta postagem gera o catálogo a partir das respostas a) como uma lista da solução mais curta por idioma eb) como uma tabela geral de líderes.

Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:

## Language Name, N bytes

onde Nestá o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Se você quiser incluir vários números em seu cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou deseja listar as penalidades de sinalizador de intérprete separadamente), verifique se a pontuação real é o último número no cabeçalho:

## Perl, 43 + 2 (-p flag) = 45 bytes

Você também pode transformar o nome do idioma em um link que será exibido no snippet:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

Conor O'Brien
fonte
22
Eu sempre pensei que 0era o número do rien .
flawr
Não tenho certeza se estou perdendo alguma coisa, mas podemos simplesmente mover um dos 1s na frente deles 0, sim?
FryAmTheEggman
@FryAmTheEggman Você está correto.
Conor O'Brien
@ MartinBüttner \ o / você o encontrou.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Não, esse era diferente. Aquele só permitia permutações de números inteiros, não de seus dígitos individuais.
Martin Ender

Respostas:

12

Pitão, 8

+1SjktSQ

Faz uma lista [1, .. , input], remove a primeira, junta-se e classifica e, em seguida, acrescenta um 1.

Suíte de teste

FryAmTheEggman
fonte
13

Perl, 44 42 41 33 31 bytes

Yaaay, primeiro post de todos os tempos!

Obrigado ao primo pelos 2 bytes salvos.

print 1,sort"@{[2..<>]}"=~/\d/g

Como outros fizeram, remover 1 e anexá-lo manualmente faz o trabalho.

Experimente online

Paul Picard
fonte
2
Bem-vindo ao PPCG e parabéns pelo seu primeiro post (embora pareça estranho me receber, desde que você se juntou antes de mim ...). Duas coisas - conto 43 bytes ... segundo, o link "Experimente online" parece apontar para uma revisão antiga / diferente do seu código. Copiar e colar manualmente seu código no Ideone funciona, mas não no seu link.
AdmBorkBork
Obrigado pelo seu comentário! Usei o TextWrangler para a contagem de bytes, acho que fui 1 longe demais ... (além de um espaço não ser necessário, o que reduz o número inteiro de bytes para 42). O Ideone deve ser corrigido agora.
Paul Picard
Oh, não sabia disso. Também funciona no meu Perl no meu Mac (5.18) Obrigado!
Paul Picard
5
Riscado
2
Salva dois bytes se livrando da divisão / junção:print 1,sort"@{[2..<>]}"=~/\d/g
primo
11

Japonês, 14 12 bytes

1+2o°U ¬¬n ¬

Experimente online!

Como funciona

1+2o°U ¬¬n ¬  // Implicit: U = input integer
  2o°U        // Generate the range of integers from 2 to U, inclusive.
       ¬¬     // Join, then split into chars.
         n    // Sort.
1+         ¬  // Join again, and add a 1 to the beginning.
              // Implicit: output last expression
ETHproductions
fonte
4
o_o você jogou no período de carência de 5 minutos? a arma mais rápida do oeste
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ eu estou supondo que você não quer postar novos golfs código depois que: D
Pierre Arlaud
9

Retina , 78 bytes

Hora de mostrar alguns novos recursos do Retina (ainda não é muito competitivo, mas antes de hoje isso provavelmente seria mais próximo de 300 bytes).

.+
$0$*1
\B
 $`
(1)+
$#1
^1| 

.
 1$0$*1
+r`(1+\2) (1+)\b
$2 $1
 1(1)*
$#1
^
1

Experimente online.

Explicação

Embora seja possível converter entre decimal e unário de maneira bastante conveniente agora, isso ainda é bastante longo, porque eu tenho que converter para frente e para trás várias vezes porque algumas operações são mais factíveis em decimal do que em unário e vice-versa.

.+
$0$*1

Vamos começar convertendo a entrada para unário. Isso funciona combinando a entrada e, em seguida, usando o $*1que se repete 1muitas vezes (esse recurso de repetição é novo a partir de hoje).

\B
 $`

Em seguida, geramos um intervalo de 1para Nem unário. Expliquei por que isso funciona na minha resposta do FizzBuzz .

(1)+
$#1

Convertemos cada número no intervalo de volta para decimal para que possamos trabalhar com os dígitos decimais. Isso é feito combinando cada um dos números unários, de modo que cada 1um gere uma captura separada. Em seguida, substituímos isso pelo número de capturas do grupo um, usando a nova sintaxe de contagem de capturas $#1.

^1| 

Isso remove os 1espaços iniciais e todos os espaços da sequência, portanto, resta apenas os dígitos (exceto um 1).

.
 1$0$*1

Nós convertemos novamente para unário e adicionamos 1a cada dígito (para garantir que par 0seja um não vazio). Também inserimos um espaço na frente de cada dígito para garantir que eles sejam separados.

+r`(1+\2) (1+)\b
$2 $1

Combinamos repetidamente um número pequeno precedido por um número maior e os trocamos. Esse tipo de bolha na Retina. :)

 1(1)*
$#1

Volte ao decimal.

^
1

Por fim, inserimos um único 1na frente para explicar o que removemos anteriormente.

Martin Ender
fonte
1
De que novos recursos você fala?
Conor O'Brien
1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Vou adicionar uma explicação mais tarde. Este usa uma nova sintaxe de substituição para contar capturas e caracteres repetidos que podem ser usados ​​para conversões decimais / unárias razoavelmente curtas. Aqui está o changelog completo: github.com/mbuettner/retina/blob/master/CHANGELOG.md
Martin Ender
@ MartinBüttner nice. Isso significa que a Retina não pode mais reivindicar essa isenção ?
Digital Trauma
@DigitalTrauma Acho que ainda é a forma mais natural de entrada. Também nunca entendi como esse tipo de linguagem-ism já recebeu tanto apoio neste site.
Martin Ender
6

Haskell, 44 bytes

import Data.List
f n='1':sort(show=<<[2..n])

Infelizmente sortestá dentro Data.List, são 17 bytes!

nimi
fonte
6

JavaScript (ES6), 65 62 54 52 bytes

Guardado 3 bytes graças a edc65

x=>eval("for(b='';x>1;)1+[...b+=x--].sort().join``")

Constrói uma sequência de todos os números de 2 a x, depois divide, classifica, une e adiciona 1 ao início. Isso ainda pode ser jogável; sugestões bem-vindas!

ETHproductions
fonte
Não tenho o ES6 em mãos, mas você não pode simplesmente usar (novo) Array(x-1).map((_,y)=>y+2) ?
Conor O'Brien
O mapa @ CᴏɴᴏʀO'Bʀɪᴇɴ pula elementos vazios da matriz, então você deve usar Array(n).fill().map(... (ver dicas ES6)
edc65
Tarde demais para publicar o meu, mas uma dica para você: n=>1+[...[...Array(n-1)].map(_=>++n,n=1).join``].sort().join`` (1 byte menor, é a divisão)
edc65
@ edc65 e Cᴏɴᴏʀ O'Bʀɪᴇɴ Obrigado pelas dicas! Eu me perguntava por que usar.split() senti tão estranho ...
ETHproductions
@ edc65 Huh, a minha solução tem o mesmo tamanho que a sua: #:n=>1+[...[...Array(n+1).keys()].slice(2).join``].sort().join``
Neil
5

Mathematica, 52 bytes

"1"<>ToString/@Sort[Join@@IntegerDigits[2~Range~#]]&

Mais uma vez, o processamento de strings aconteceu ...

LegionMammal978
fonte
Acho IntegerDigitstópicos sobre listas para que você não precise mapeá-lo.
Martin Ender
Oh certo, precedência.
Martin Ender
4

APL (17)

'1',∆[⍋∆←1↓∊⍕¨⍳⎕]

Explicação:

'1',∆[⍋∆←1↓∊⍕¨⍳⎕]
-----------------
               ⎕   read a number from the keyboard
               ⍳    get the natural numbers up to and including that number
             ⍕¨    get the string representation for each number
           ∊       flatten the array (giving a string of digits)
         1↓        remove the first digit (which is always 1)
       ∆←          store the result in ∆
      ⍋            get a permutation to sort ∆ upwards
    ∆[           ] rearrange ∆ so that it is sorted
'1',               add a 1 to the front

Teste:

      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      1
1
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      10
10123456789
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      55
10000011111111111111122222222222222223333333333333333444444444444444455555555555566666777778888899999
marinus
fonte
Agradável! Muito melhor que o meu. : O DI não sabia que isso achataria a matriz e forneceria uma string. É bom saber disso.
Alex A.
3

Python 2, 60 bytes

_="".join;print"1"+_(sorted(_(map(str,range(2,input()+1)))))
Azul
fonte
3

ClojureScript, 48 bytes

#(apply str"1"(sort(apply str(range 2(inc %)))))

O mesmo que todos os outros, praticamente. REPL disponível aqui .

MattPutnam
fonte
3

Ruby, 48 bytes

Uma função anônima. Basicamente, apenas Rubyfied algumas das outras respostas aqui ..

->n{n>1?(?1+[*2..n].join.chars.sort*'').to_i: n}
daniero
fonte
3

Brachylog , 76 41 bytes

1 .;{,1:.e?}?:1fcbZlL,ZoOlM,10^(L-M)=:Oc.

Pega um número como entrada.

Esta solução funciona com as poucas alterações que fiz no predicado interno do Findall f. Aparentemente, o OP está bem em usar idiomas mais antigos que a resposta, então acho que está bem (as alterações que fiz foram intencionadas há muito tempo, apenas me motivei a fazê-lo por causa desse desafio).

Explicação

1 .                                            § If the input is 1, unify output with 1

   ;                                           § Else

    {      }?:1f                               § Output a list of all inputs which satisfy
                                               § the predicate in brackets with the input
                                               § of the main predicate (ie the input number)
                                               § as output

     ,1:.e?                                    § True if the input is an integer between 1
                                               § and . (the output)

                cbZ                            § Concatenate everything into a single number,
                                               § remove the first digit (1) and call it Z

                   lL,ZoOlM,                   § L is the length of Z, M is the length of O
                                               § O being Z sorted (which removes the leading
                                               § 0s)

                            10^(L-M)=:Oc.      § Concatenate 10^(L-M) at the beginning of O
                                               § and unify it with the output
Fatalizar
fonte
3

Smalltalk, 76 bytes

Como de costume em Smalltalk, conceitualmente muito conciso, mas textualmente muito detalhado ...

f:l^'1',((2to:l)fold:[:p :q|p asString,q asString])asByteArray sort asString

Adicione isso como um método de classe Stringe chame assim, por exemplo, para 20,String f: 20


fonte
3

Utilitários Bash + GNU, 58

seq $1|sed 's/./&\n/g'|sort|tr -d \\n|sed 's/\(0*\)1/1\1/'

Experimente online.

Trauma Digital
fonte
1
Eu tive uma abordagem semelhante, mas um tratamento diferente da parte "1 no início" (52 bytes). Com o seu, você pode raspar: classificar (1 dígito, sem necessidade de -n).
Olivier Dulac
3

Bash, 35 34 bytes

printf %d 1`seq 2 $1|fold -1|sort`

Isso se baseia nas respostas de @DigitalTrauma e @OlivierDulac . Experimente online com Ideone .

Como funciona

  • seq 2 $1imprime todos os números inteiros de 2 ao especificado na linha de comando.

  • fold -1 quebra todas as linhas com a largura 1, ou seja, coloca cada caractere em sua própria linha.

    -1 parece ser um recurso não documentado.

  • sort classifica os caracteres pelo seu valor numérico.

  • printf %d 1`...`​precede um 1 à primeira linha e imprime cada linha como um número inteiro ( %d), sem separação.

    Isso tira proveito da curiosa implementação printf do Bash, que repete a cadeia de formatação repetidamente, até que todos os argumentos sejam consumidos.

Dennis
fonte
+1, eu como aquele melhor que o nosso :)
Olivier Dulac
3

JavaScript ES6, 49 46 bytes

Agradecimentos a edc65 por 2 bytes

F=
x=>1+[...(g=_=>x>1?x--+g``:_)``].sort().join``

;console.log(F(15))

l4m2
fonte
1
Eu consegui algo semelhante, mas 1 byte mais curto. Tente usar uma função recursiva com nenhum argumento, apenas diminuindo o parâmetro x original
edc65
2

Julia, 33 bytes

n->"1"*join(sort([join(2:n)...]))

Esta é uma função lambda que aceita um número inteiro e retorna uma string. Para chamá-lo, atribua-o a uma variável.

Construímos o intervalo 2:n, que ficará vazio por n<2, juntamos-o a uma sequência, dividimos a sequência em uma matriz de caracteres, ordenamos-os, juntamos-o a uma sequência e acrescentamos 1.

Alex A.
fonte
2

APL, 21 bytes

{' '~⍨⍕1,x[⍋x←⍕1↓⍳⍵]}

Esta é uma função monádica sem nome que aceita um número inteiro à direita e retorna uma string. Para chamá-lo, atribua-o a uma variável.

Explicação:

            x←⍕1↓⍳⍵]}   ⍝ Get the numbers 1:input, drop 1, convert to string
         x[⍋            ⍝ Sort
      ⍕1,               ⍝ Tack 1 onto the front, flatten to string
{' '~⍨                  ⍝ Remove the spaces (side effect of ⍕ on an array)

Experimente online

Alex A.
fonte
2

Python 2, 60 bytes

P=input();print"1"+"".join(sorted(`range(2,P+1)`)[P*2-4:-2])

Indexação para a vitória. :-)


Python 2, 60 bytes

P=input();print"1"+"".join(sorted(`range(-P,-1)`))[P*3-5:-2]

Apenas uma alternativa.

Zach Gates
fonte
2

Via Láctea 1.6.4 , 22 bytes (não competindo)

^^'LH=^^JB", "-Q"1";+!

Eu tive que adicionar um opcode de classificação para esse desafio.


Explicação

^^                      ` pop the TOS
  '                     ` read input from the command line
   LH                   ` push a reversed Pythonic range(TOS+1)
     =^^J               ` remove the top 2 items from the TOS
         B              ` push the string literal of the TOS
          ", "-         ` remove ", " from the TOS
               Q        ` sort the TOS
                "1";+   ` add "1" to the beginning of the TOS
                     !  ` output the TOS
Zach Gates
fonte
2

Sério, 10 bytes

,u2xεjS'1+

Hex Dump:

2c753278ee6a5327312b

Experimente Online

Explicação:

,            Read input
 u2x         Push range from 2..n
    εj       Join into string
      S      Sort
       '1+   Prepend a "1"
quintopia
fonte
2

Ferramentas Bash e GNU, 58 52 bytes

echo 1$(seq 2 $1|sed -e 's/./&\n/g'|sort|tr -d \\n)
Olivier Dulac
fonte
abordagem semelhante a @ Digital-trauma, mas maneira diferente de adicionar o 1, e não é necessário -n, pois os números têm 1 dígito. (Vi sua resposta depois que eu fiz a minha primeira tentativa)
Olivier Dulac
2

PowerShell, 61 59 bytes

param($a)(("1"+-join([char[]]-join(2..$a)|sort)),1)[$a-eq1]

Pega a entrada param($a)e a usa para indexar em uma matriz com [$a-eq1]. Se verdadeiro, indexamos o segundo elemento e a saída 1. Caso contrário, concatenamos "1"com o joinarray ed criado por 1) definindo um novo intervalo 2..$aque foi joineditado juntos, 2) convertendo-o como um char-array e 3) enviando-o pelo Sort-Objectcmdlet, que é gerado.

Edit1 - salvou 2 bytes movendo o -joinoperador interno .

AdmBorkBork
fonte
2

Gogh , 9 7 bytes

GJT1-1P

Você pode executar isso usando:

$ ./gogh noi 'GJT1-1P' <input>

G     “ Push a range (1, TOS]       ”
J     “ Join the TOS                ”
T     “ Sort the TOS                ”
1-    “ Remove the first 1          ”
P     “ Prepend the TOS to the STOS ”
Zach Gates
fonte
"Você pode usar um idioma que foi criado após este concurso, desde que não tenha sido feito para responder a esse desafio." Eu permitir que essas línguas para ser competitivo em meus desafios, normalmente;)
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ: Oh, incrível! Obrigado por apontar isso :)
Zach Gates,
2

Gelatina , 8 bytes

RDFṢ1œ|Ḍ

Experimente online!

Como funciona

RDFṢ1œ|Ḍ  Main link. Argument: n (integer)

R         Range; yield r := [1, ..., n].
 D        Convert each k in r into the array of its digits in base 10.
  F       Flatten the resulting array of lists.
   Ṣ      Sort the resulting flat list of digits.
    1œ|   Perform multiset union with 1 as left argument.
          This moves a single 1 to the beginning of the list.
       Ḍ  Convert the resulting list of base 10 to integer.
Dennis
fonte
2

Oracle SQL 11.2, 222 211 bytes

SELECT 1||TRIM(xmlagg(xmlelement(e,c)).EXTRACT('//text()'))FROM(SELECT SUBSTR(s,LEVEL+2,1)c FROM(SELECT MAX(sys_connect_by_path(LEVEL,' '))s FROM DUAL CONNECT BY LEVEL<=:1)CONNECT BY LEVEL<=LENGTH(s)ORDER BY 1);

Sem golfe

SELECT 1||TRIM(xmlagg(xmlelement(e,c)).EXTRACT('//text()'))  -- add leading 1, concatenate each char and remove spaces
FROM   (
         SELECT SUBSTR(s,LEVEL+2,1)c                          -- split the string in characters, omiting the first number (1)   
         FROM   (
                  SELECT MAX(sys_connect_by_path(LEVEL,' '))s -- create a string by concatenating numbers
                  FROM   DUAL 
                  CONNECT BY LEVEL<=:1
                )
         CONNECT BY LEVEL<=LENGTH(s)ORDER BY 1
       )
Jeto
fonte
2

MATL , 17 bytes

Usa a versão atual (7.0.0) do idioma / compilador.

49[]i:"@YUh]6L)Sh

Inspirado pela resposta de FryTheEgggman .

EDIT (29 de julho de 2016): você pode experimentá-lo on-line com algumas modificações para se adaptar às alterações no idioma.

Exemplo

>> matl
 > 49[]i:"@YUh]6L)Sh
 >
> 12
101111223456789

Explicação

49        % push '1'
[]        % push empty array
i:        % input "N" and build vector [1, 2, ... N]
"         % for each number in this vector
   @      % push that number
   YU     % convert to string
   h      % concatenate horizontally
]         % end
6L)       % remove first element
S         % sort
h         % concatenate horizontally
Luis Mendo
fonte
1

05AB1E , 6 bytes

Nota: Este envio usa recursos que pós-datam esse desafio e, portanto, não são competitivos

Código:

Lß?J{?

Explicação:

L      # Creates the list [1 .. input]
 ß     # Extract the smallest value of the list
  ?    # Print this value (always 1)
   J   # ''.join(list)
    {  # Sort the string
     ? # Print this value

Usa codificação ISO 8859-1

Adnan
fonte
Como é que isso funciona?
precisa saber é o seguinte
@ThomasKwa Explanation added
Adnan
Uau. Isto é fantástico!
Conor O'Brien
1

Mathcad, 86 "bytes"

A função s (n) usa um loop for para criar o "número inteiro" do Champernowne convertendo cada número em sua forma de string e concatenando-os juntos. A sequência é então convertida em seu vetor equivalente de códigos ASCII e classificada. A função então troca quaisquer zeros à esquerda com o primeiro, finalmente convertendo o vetor de volta em uma string.

Para verificar a função, coloquei os casos de teste em um vetor vn e apliquei s a vn usando o operador vetorizar. Em seguida, verifico os resultados com relação aos valores de caso de teste fornecidos.

insira a descrição da imagem aqui


O Mathcad é um aplicativo matemático baseado em planilhas 2D compostas de "regiões", cada uma das quais pode ser texto, uma expressão matemática, programa, plotagem ou componente com script.

Uma instrução matemática ou de programação é selecionada em uma barra de ferramentas da paleta ou inserida usando um atalho de teclado. Para fins de golfe, uma operação ("byte") é considerada o número de operações do teclado necessárias para criar um nome ou expressão (por exemplo, para definir a variável a como 3, escreveríamos a: = 3. O operador de definição : = é um único pressionamento de tecla ":", como são ae 3, fornecendo um total de 3 "bytes". A programação para o operador requer digitar ctl-shft- # (ou um único clique na barra de ferramentas de programação) para que novamente seja equivalente a 1 byte.

Stuart Bruff
fonte