Como estou me candidatando a alguns empregos cujo anúncio de emprego não indica o salário, imaginei um entrevistador particularmente malvado que daria ao candidato a possibilidade de decidir seu próprio salário ... "jogando golfe" nele!
Então é assim:
Sem usar números, escreva um código que mostre o salário anual que você deseja oferecer.
No entanto, ser capaz de escrever código conciso é uma pedra angular desta empresa. Então, eles implementaram uma escada de antiguidade muito estreita, onde
os empregadores que escrevem códigos com b bytes de comprimento podem ganhar no máximo ($ 1'000'000) · b -0,75 .
nós estamos olhando (estas são as partes inteiras, apenas por razões de exibição):
1 byte → $1'000'000 15 bytes → $131'199
2 bytes → $594'603 20 bytes → $105'737
3 bytes → $438'691 30 bytes → $78'011
4 bytes → $353'553 40 bytes → $62'871
10 bytes → $177'827 50 bytes → $53'182
O desafio
Escreva um programa ou função que não receba nenhuma entrada e emita um texto contendo um sinal de dólar ( $
, U + 0024) e uma representação decimal de um número (inteiro ou real).
- Seu código não pode conter os caracteres
0123456789
.
Na saída:
Opcionalmente, pode haver um espaço único entre o cifrão e o número.
Espaços em branco à direita e à esquerda e novas linhas são aceitáveis, mas qualquer outra saída é proibida.
O número deve ser expresso como um número decimal usando apenas os caracteres
0123456789.
. Isso exclui o uso de notação científica.Qualquer número de casas decimais é permitido.
Uma entrada é válida se o valor que ela gera não for maior que ($ 1'000'000) · b -0,75 , em que b é o comprimento de bytes do código-fonte.
Exemplo de saída (as aspas não devem ser exibidas)
"$ 428000" good if code is not longer than 3 bytes
"$321023.32" good if code is not longer than 4 bytes
" $ 22155.0" good if code is not longer than 160 bytes
"$ 92367.15 \n" good if code is not longer than 23 bytes
"300000 $" bad
" lorem $ 550612.89" bad
"£109824" bad
"$ -273256.21" bad
"$2.448E5" bad
A pontuação
O valor que você produz é a sua pontuação! (Maior salário ganha, é claro.)
Entre os melhores
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, $X (Y bytes)
onde X
está o seu salário e Y
o tamanho do seu envio. ( Y bytes
Pode estar em qualquer lugar da sua resposta.) Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>$111111.111... (18 bytes)</s> <s>$111999 (17 bytes)</s> $123456 (16 bytes)
Você também pode transformar o nome do idioma em um link, que será exibido no snippet do placar de líderes:
# [><>](http://esolangs.org/wiki/Fish), $126,126 (13 bytes)
Editar: (arredondado) pontuação máxima permitida por contagem de bytes, para uma referência mais rápida - texto aqui :
fonte
$80,662.67
vez de$80662.6659
? Suas regras parecem impedir a vírgula, o que significa que eu não poderia usar nenhuma função de moeda integrada.Respostas:
bash, $ 127127
Experimente online!
Como o
x
comando não existe, ele erros e define o código de saída como127
.Em seguida, o código gera um sinal de dólar seguido por
$?
duas vezes. A$?
variável armazena o código de saída do comando anterior, portanto, isso gera$127127
em 13 bytes .fonte
x
não existe. Como um bônus, ele travou ao tentar abri-lo, então consegui$11
!]
vez dex
, o primeiro é menos provável que exista.w
é uma coisa (perto dewho
) e sai com sucesso, então você recebe $ 00 por isso!Java 8, $ 131.199,00 (15 bytes)
Experimente online.
Explicação:
Usei um programa para gerar um caractere ASCII imprimível no intervalo
[32, 126]
que, ao dividir131199
, teria a menor quantidade de valores decimais. Como101
posso dividir131199
igualmente, resultando1299
, estou apenas 31 centavos abaixo do meu salário máximo possível com base na minha contagem de bytes de 15.fonte
CJam , 5 bytes, $ 262'144
Experimente online!
Como funciona
fonte
CJam , (5 bytes) $ 294204,018 ...
Experimente online!
Explicação:
Eu derivei da resposta de Dennis, mas procurei combinações de números que produzissem um resultado mais alto. Eu quase desisti, mas vi que essaπ π11≈ 294000
P
é a variável para e essa . A letra tem um valor 11 em CJam, fornecendo o código acima.π 11 ≈ 294000B
fonte
R , 20 bytes,
$103540.9
Experimente online!
O máximo para 20 bytes é
$105737.1
, portanto, isso é muito próximo do limite de salário!Seria um bom aumento, e se eu for pago para fazer golfe com código ......
fonte
pi
com a soma de um conjunto de dados ... exigiria uma abordagem programática para avaliar várias combinações de operadores / conjuntos de dados / pi para chegar o mais próximo possível do máximo. Não há tempo para isso agora, mas parece um bom desafio em si.GS2 , (5 bytes) $ 292.929
Um programa completo (mostrado aqui usando a página de códigos 437 ). (O salário máximo atingível em 5 bytes é $ 299069.75)
Experimente online!
Baseia-se na resposta GS2 de Dennis ...
fonte
0x0724011d41
é de 5 bytes por minha conta ...R , 21 bytes $ 99649.9
Experimente online!
Uma
R
abordagem diferente - veja também a resposta de GiuseppeMuito perto do máximo de US $ 101937 para este bytecount.
Bônus:
object.size()
R , 24 bytes $ 89096
Experimente online!
Provavelmente, isso depende do sistema, mas quando registrei isso no TIO, recebi US $ 89096 - próximo ao limite de 92223 para 24 bytes.
fonte
datasets
pacote faz muito sentido.prod
esum
aleatoriamente ... mas o prod aumenta muito rápido!sum(volcano)
é690907
, mas que teria de ser cerca de 1 byte para o trabalho, hahaJavaScript (ES6), 19 bytes, US $ 109.839
Experimente online!
Sem
atob()
(Node.js), 26 bytes, $ 86.126Experimente online!
A concatenação de '$' com os códigos ASCII de 'V' (86) e '~' (126).
fonte
Buffer
. Primeira vez em que reconheci esta classe; ')Buffer
construtor está obsoleta, de modo que vai ter mais em versões futurasBrainfuck com modificação automática , 16 bytes, $ 124444
Experimente online!
fonte
:
, então você pode removê-lo e adicionar outro+
por US $ 124444.1
, por que não contar até3
e depois imprimir apenas3
s? Você salvaria um byte e imprimiria um número maior.PHP, $ 131116 (8 bytes)
Não vi um para php e queria vomitar um. Eu sei que em algum lugar no php é um typecast ruim que cortaria isso ao meio, mas não consigo encontrá-lo agora.
Isso apenas tira proveito das tags curtas do PHP e do PHP construído em constantes.
Experimente online!
fonte
<?="$".
, basta fazer$<?=
e salvar alguns bytes.GS2 , 5 bytes, US $ 291.000
Esta é uma representação CP437 do código fonte binário.
Experimente online!
Como funciona
fonte
Excel 19 bytes $ 107899.616068361
Explicação:
fonte
Vim,
$ 99999$ 110000$ 120000Experimente online!
Usa o registro de expressão (observe que há um caractere <Cr>, invisível na maioria das fontes, entre
$
e=
, para um total de 13 bytes ) para inserir o valor da'pvh'
opção vezes o valor da'ur'
opção.'previewheight'
é a opção que controla a altura das janelas de visualização, que é 12 por padrão.'undoreload'
é o número máximo de linhas que um buffer pode ter antes que o vim desista de armazená-lo na memória para desfazer e o padrão é 10.000.fonte
Jelly ,
$ 256000 $ 256256(6 bytes ) $ 257256Um programa completo. (O salário máximo atingível em 6 bytes é $ 260847.43)
Experimente online!
Quão?
Anterior...
5 bytes $ 256256
('$' concatena 256, repita 256 - causando impressão implícita provisória)
6 bytes $ 256000:
(256 × 1000 ṭack '$')
fonte
C #
Programa completo,
72 bytes, $ 4044866 bytes, $ 43008Experimente online!
Explicação
O operador do turno esquerdo trata caracteres
'T'
e'i'
como números inteiros 84 e 105 respectivamente e executa o turnoLambda,
19 bytes, US $ 10956817 bytes, US $ 118784Experimente online!
Editar Obrigado a @ LegionMammal978 e @Kevin por salvar 2 bytes
fonte
()=>
queo=>
para uma -1 byte adicional.o=>"$"+('t'<<'j')
jogado com $ 118784.PHP, 13 bytes, salário de US $ 144000
Infelizmente, para este trabalho, é necessário me mudar para as Maurícias (bem, eu poderia me mover um pouco menos para o leste, no entanto, cada fuso horário menos renderia uma queda de salário de US $ 36 mil.) Para compensar a inconveniência, meu salário aumenta em US $ 1 a cada ano bissexto.
Isso coloca
Z
o fuso horário em segundos e acrescenta se é ou não um ano bissexto.fonte
brainfuck , 43 bytes, $ 58888
Experimente online!
Como funciona
fonte
Python 3 , (22 bytes) $ 98.442
Experimente online!
Muito parecido com a resposta Ruby da maçaneta da porta , o caractere Unicode de 4 bytes usado aqui
𘂊
, tem um valor ordinal do salário inteiro máximo alcançável em 22 bytes.Observe que
print()
imprime seus argumentos sem nome separados por espaços por padrão (sep
é um argumento nomeado opcional).fonte
Gol> <> , $ 207680 em 8 bytes
Experimente online!
Como funciona:
Curiosamente, você pode usar em
h
vez den;
, o que gera'o**h5$
uma pontuação de US $ 231504, mas você não pode usar 0-9 e não há outra maneira de 1 byte para pressionar 53, o valor ASCII de5
fonte
Geléia , 8 bytes, $ 210176.48625619375
3535 (
⁽½"
) multipli (×
) ed pelo seu sqrt (½
).Experimente online!
fonte
Mathematica, 18 bytes, US $ 107.163,49
Programa completo; correr usando
MathematicaScipt -script
. Saídas$107163.4882807548
seguidas por uma nova linha à direita. I ter verificado que esta é a solução mais alta pontuação da forma em que é composto de , , , e .$~Print~N[expr]
expr
Pi
E
I
+-* /()!
fonte
I
?I
e não apenasI I
ouI/I
que geralmente tenha uma+ 0.*I
tachinhaN
."$"~Print~Exp[E!N@E]
(que tem o mesmo comprimento que"$"~Print~N[E^(E!E)]
), mas com as aspas ao redor$
, a saída estava apenas acima do limite.$~Print~⌈E^(E!E)⌉
com caracteres de teto esquerdo e direito com um caractere, seria um pouco mais e 17 bytes05AB1E (5 bytes), $ 262626
Experimente online!
$
["$", 26, 26, 26]
J
fonte
JavaScript (Node.js) , 23 bytes, $ 65535
Experimente online!
Esse é o melhor que eu posso ficar sem
atob
, embora exista um grande espaço de melhoria tbhVocê sabe, não ter um caractere curto para a função de conversão ascii é muito chato.
APÓS UM DIA INTEIRO
JavaScript (Node.js) , 30 bytes, US $ 78011
Experimente online!
ou: 29 bytes, US $ 80020
Onde
ficaU+13894 INVALID CHARACTER
Oh
String.codePointAt
! Acabei de esquecer completamente isso!Uma piada (15B, US $ 130000), não valiosa, mas apenas por diversão
fonte
_=>"$⑮萬"
^ _ ^x1683F
?_=>"$"+parseInt('1V0I',36)
também é mais alto do que o que você tem até agora, então você pode querer adicionar esse também. Pena que você não pode converter base 64 para decimal em JavaScript ...MATLAB, 17 bytes, $ 112222
Resposta antiga:
fonte
+pi
Ruby, $ 119443
Experimente online!
A saída inteira máxima para 17 bytes. O caractere Unicode é U + 1D293, que é 119443 em hexadecimal.
fonte
$><<?$<<$$
em um sistema de longa duração. Respostas até 177827 são válidas.dc , $ 169169 10 bytes
Experimente online!
Imprime 13 (
D
) ao quadrado, duas vezesfonte
Japt, 5 bytes, $ 262144
Teste-o
A explicação
I
é a constante de Japt para64
,³
cuba-a e'$+
concatena-a com o símbolo do dólar.fonte
"${I³
Befunge-98 (PyFunge) , 8 bytes, US $ 209728
Experimente online!
O caractere
:
foi calculado usando o seguinte método:Usando
@
ef
também funciona, mas dá apenas $ 208896.fonte
Befunge-93 , 9 bytes, $ 192448
Experimente online!
Saídas
$192448
, apenas dois dólares e nove centavos abaixo do máximo. Até funciona como um poliglota com implementações apropriadas do Befunge-98 , onde nem sequer é necessário gerar um erro de instrução não reconhecido!Explicação:
fonte
Cubix , $ 155088 (12 bytes)
Experimente online!
Um problema interessante, esperava reduzir isso para 7 ou 8 bytes, mas provou ser difícil. Empurra os caracteres ე e $ para a pilha, gera
$
, multiplica o topo da pilha, gera o número e pára. Ainda esperando encontrar uma opção de byte mais baixofonte