Imprimir strings sem compartilhar caracteres

15

Editar: permitido reutilizar espaços em branco.

Sua tarefa é escrever n programas (ou funções, ou corpos de funções sem usar parâmetros ou os nomes das funções) no mesmo idioma. O k ésimo programa deve gerar o número (cardinal) k em inglês padrão em minúsculas (com uma nova linha à direita opcional). Portanto, o primeiro programa deve produzir one, o segundo deve produzir two, etc. Para um número com duas partes, eles devem ser separados por um hífen twenty-one.

Mas não há dois programas no seu envio que possam compartilhar caracteres que não sejam espaços em branco ou caracteres em branco, fazendo trabalhos úteis. Por exemplo, se o seu primeiro programa é apenas "one", em seguida, nenhum dos " o ne epode ser usado novamente em seus outros programas.

Você pode usar caracteres de espaço em branco (espaços, novas linhas e guias) em dois ou mais programas, se eles servem apenas como separadores ou recuo e não fazem nada sozinhos. Portanto, você não pode reutilizá-los na linguagem Whitespace e não pode usá-los em strings em mais de um programa.

Você pode usar apenas caracteres ASCII, guias e novas linhas imprimíveis (incluindo CR e LF). Todo programa deve conter pelo menos 1 caractere.

Sua pontuação é a soma do tamanho de 1 / programa ^ 1,5. Maior pontuação ganha. Você pode usar esse snippet de pilha ( ou esse código CJam ) para calcular sua pontuação:

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>

jimmy23013
fonte
Uma regra de pontuação melhor pode ser a soma de 1 / (tamanho do programa + c) ^ 1,5, onde c é uma constante. Mas acho que provavelmente é tarde demais para mudar isso.
Jimmy23013
Podemos adicionar um multiplicador para chegar a um número cardinal mais alto, pois esse parece ser o objetivo? Cheguei aos doze, mais alto que todos os outros, mas ainda estou perdendo.
Mbomb007
@ mbomb007 Desculpe por fazer deliberadamente o Headsecks uma pontuação mais baixa. Mas se o Headsecks tiver uma pontuação parecida com a dos outros, acho que o Glypho ganhará muito (para não dizer o idioma).
jimmy23013
Eu quero fazer isso no espaço em branco :(
YoYoYonnY
1
@ mbomb007 Se eu estiver fazendo uma pergunta semelhante novamente, provavelmente adicionarei uma pequena constante aos tamanhos de programa na partitura. Mas é arbitrário demais para mudar nesta questão.
precisa saber é o seguinte

Respostas:

6

gs2 , 0.38669200758867045

Remova o espaço em branco de todos esses programas, mas três , é apenas para legibilidade (tosse) . um e seis são programas gs2 que travam (com a pilha insuficiente), que convenientemente torna .

um (3 bytes)

one

dois (1384 bytes)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

três (92 bytes)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

Muito espaço em branco significativo, então aqui está um despejo hexadecimal. Ele tem um caractere de alimentação de linha única no início:


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

quatro (276 bytes)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

cinco (178 bytes)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

seis (3 bytes)

six
Lynn
fonte
Não vi esse requisito - examinarei e corrigirei as soluções intermediárias.
Lynn
Eu começar a usar 20através 7E, 09(guia), 0A(LF), e 0D(CR), certo?
Lynn
Sim. Editado para permitir CR explicitamente.
Jimmy23013
O 1em cinco foi um erro de digitação; Eu fui e o removi. Vou consertar três agora.
Lynn
2
Os programas um e seis são essencialmente erros de sintaxe que despejam o código-fonte em STDOUT e mostram um erro em STDERR. Parece haver consenso de que tudo está bem (portanto, parabéns), mas você deve mencioná-lo na sua resposta.
Dennis
13

CJam, 0.24075

Programas

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

Obrigado a @ user23013 por sua sugestão de usar 'por seis .

Saída, comprimento, pontuação, caracteres usados

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

Verifique os resultados você mesmo no intérprete CJam .

Dennis
fonte
6

Insônia , 0.100688383057110116

Apenas para começar. É muito improvável que isso vença. Sob o esquema de pontuação atual, qualquer idioma que possa imprimirone em 5 ou menos caracteres tem uma vantagem impressionante.

um (8 bytes, 0,04419417382415922)

uuyp>~p~

dois (9 bytes, 0,037037037037037035)

oeoojdoLj

três (21 bytes, 0,010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

quatro (23 bytes, 0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
fonte
4

Headsecks , 0.044623631135793776

Gerado aqui

Essa linguagem é uma substituição simples de AM, onde a única coisa que importa é o valor do caractere módulo 8.

Infelizmente, programas mais longos dão uma pontuação pior, apesar de serem capazes de doze ! (Eu poderia ficar mais alto se pudesse usar ASCII não imprimível e Unicode.)

1

##%%%%%%%&##$%&#&%&%%%%%%%%%&

dois

--------+--.+++,-..+++.--------.

três

5555555535563334566555555555555633333333336555555555555566

quatro

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

cinco

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

seis

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

Sete

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

oito

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

nove

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

dez

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

onze

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

doze

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~
mbomb007
fonte
Você só pode usar caracteres ASCII, guias e novas linhas imprimíveis.
Jimmy23013
@ user23013 eu fiz tantos quanto pude, e eu tenho a 12.
mbomb007
2

/// , 0.19245008972987526

one

Esta resposta é inspirada na resposta de @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̷̨̰́̀ĥ̷̳, na qual ele disse

Sob o esquema de pontuação atual, qualquer idioma que possa imprimir oneem 5 ou menos caracteres tem uma vantagem impressionante.

user12205
fonte
OK, o algoritmo de pontuação parece ter uma brecha. Bem jogado.
Dennis
Bem, essa pergunta está na caixa de areia por tanto tempo apenas para obter um método de pontuação melhor. E ele ainda não funcionou bem ... Isso também funciona em PHP, ASP, etc.
jimmy23013
0

SmileBASIC, .10062

"1"

?"one

"dois"

PRINT MID$(@two,1,3)

Minha outra resposta é mais interessante, mas esta recebe uma pontuação mais alta.

Uma estratégia importante para obter a cadeia mais longa é usar mais caracteres para salvar caracteres UNIQUE (por exemplo, usar x - -xno programa 2 para salvary + y no programa 3)

O problema com o sistema de pontuação é que ele classifica 2 programas curtos melhores que 3 programas longos, portanto, não há motivo para salvar caracteres para programas posteriores, se prolongar o programa atual.

Além disso, valoriza programas curtos individuais maiores que um tamanho TOTAL menor. Se eu trocar? ePRINT na minha resposta, posso salvar 1 caractere, mas minha pontuação é MEIO.

Eu acho que seria melhor basear isso apenas no número de programas, com tamanho total como desempate.

12Me21
fonte
3
Eu acho que ambos os programas estão compartilhando um o...
Jayce