Sem usar números, obtenha o salário mais alto possível. Mas não exagere!

227

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 Xestá o seu salário e Yo tamanho do seu envio. ( Y bytesPode 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 :

insira a descrição da imagem aqui

Nicola Sap
fonte
61
Este é um dos poucos (imo) desafio bem-sucedido não aleatório de saída não fixa de saída fixa. Ideia única!
Sr. Xcoder 26/08/19
2
Bom desafio! Podemos gerar um valor de moeda totalmente formatado, se desejado? Como em $80,662.67vez 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.
BradC 27/08/19
6
Espero que você não se importe. Adicionei uma variação do snippet da tabela de classificação que classifica por pontuação em vez de bytes. Excelente primeiro desafio!
ETHproductions
9
Acabei de perceber a nova tag de colaborador. Desafio bem construído, com uma alta upvote tal e uma vasta quantidade de respostas em apenas alguns dias, eu me pergunto se isso poderia ser elegível para Rookie do Ano desse ano;)
Shieru Asakoto
2
Eu indiquei esse desafio como candidato à categoria "Novato do ano - desafios" no Best of PPCG 2018, como eu disse na época.
Shieru Asakoto

Respostas:

109

bash, $ 127127

x;echo \$$?$?

Experimente online!

Como o xcomando não existe, ele erros e define o código de saída como 127.

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 $127127em 13 bytes .

Maçaneta da porta
fonte
52
Curiosamente, se você estiver em Mac e você tem XQuartz instalado, isso não vai funcionar, porque x não existe. Como um bônus, ele travou ao tentar abri-lo, então consegui $11!
numbermaniac
13
Use em ]vez de x, o primeiro é menos provável que exista.
pts
@numbermaniac Além disso, esses comandos foram encontrados para instalação no ubuntu 19.04: e, q, r. Mas wé uma coisa (perto de who) e sai com sucesso, então você recebe $ 00 por isso!
val
67

Java 8, $ 131.199,00 (15 bytes)

v->"$"+'e'*'ԓ'

Experimente online.

Explicação:

v->            // Method with empty unused parameter and String return-type
  "$"+         //  Return a dollar sign, concatted with:
      'e'*'ԓ'  //  131199 (101 * 1299)

131,199.00<131,199.31

Usei um programa para gerar um caractere ASCII imprimível no intervalo [32, 126]que, ao dividir 131199, teria a menor quantidade de valores decimais. Como 101posso dividir 131199igualmente, resultando 1299, estou apenas 31 centavos abaixo do meu salário máximo possível com base na minha contagem de bytes de 15.

Kevin Cruijssen
fonte
12
Dang, pontuação impressionantemente eficiente!
ETHproductions
42

CJam , 5 bytes, $ 262'144

'$YI#

Experimente online!

Como funciona

'$     Push '$'.
  Y    Push 2.
   I   Push 18.
    #  Pop 2 and 18 and perform exponentiation, pushing 262144.
Dennis
fonte
41

CJam , (5 bytes) $ 294204,018 ...

'$PB#

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 Pé a variável para e essa . A letra tem um valor 11 em CJam, fornecendo o código acima.π 11294000ππ11294000B

maxb
fonte
6
Como sua pontuação é seu salário, você deve mencioná-la no cabeçalho. Esta resposta está ganhando atualmente. :)
Dennis
37

R , 20 bytes,$103540.9

T=pi+pi;cat("$",T^T)

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

Giuseppe
fonte
2
pode ser uma maneira de combinar picom 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.
Jayce
29

GS2 , (5 bytes) $ 292.929

•$☺↔A

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

•$☺↔A                             []
•$    - push '$'                  ['$']
  ☺   - push unsigned byte:
   ↔  -   0x1d = 29               ['$',29]
    A - push top of stack twice   ['$',29,29,29]
      - implicit print            $292929
Jonathan Allan
fonte
11
São 11 bytes, mesmo que sejam 5 caracteres.
dotancohen 26/08/18
3
@dotancohen: 0x0724011d41é de 5 bytes por minha conta ...
eggyal
2
@eggyal: Perdi um pouco a página de código 437. Toque agradável!
dotancohen 26/08/18
3
Caro eleitor, eu poderia ter algum feedback, por favor; Não vejo o que é incorreto, não é útil ou não é claro.
Jonathan Allan
27

R , 21 bytes $ 99649.9

cat("$",min(lynx^pi))

Experimente online!

Uma Rabordagem diferente - veja também a resposta de Giuseppe

Muito perto do máximo de US $ 101937 para este bytecount.

Bônus: object.size()

R , 24 bytes $ 89096

cat("$",object.size(ls))

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.

JayCe
fonte
arrumado! Pensei em tentar escolher um bom conjunto de dados, mas não consigo descobrir onde procurar ... Acho que o datasetspacote faz muito sentido.
Giuseppe
@ Giuseppe Estou apenas tentando prode sumaleatoriamente ... mas o prod aumenta muito rápido!
Jayce
sum(volcano)é 690907, mas que teria de ser cerca de 1 byte para o trabalho, haha
Giuseppe
Ótima idéia usando conjuntos de dados!
digEmAll
@ Giuseppe boa captura eu tinha esquecido completamente isso! duh.
Jayce
26

JavaScript (ES6), 19 bytes, US $ 109.839

_=>atob`JDEwOTgzOQ`

Experimente online!

109839109884


Sem atob()(Node.js), 26 bytes, $ 86.126

_=>'$'+Buffer('V~').join``

Experimente online!

A concatenação de '$' com os códigos ASCII de 'V' (86) e '~' (126).

Arnauld
fonte
Uau Buffer. Primeira vez em que reconheci esta classe; ')
Shieru Asakoto 29/08
11
@ user71546 Isso poderia ser feito em 24 bytes por US $ 91.126 se mil separadores fossem permitidos. Mas, aparentemente, eles não são ... :(
Arnauld 29/08
Bufferconstrutor está obsoleta, de modo que vai ter mais em versões futuras
mcfedr
@mcfedr Não nos preocupamos com o código de golfe, desde que uma versão funcional do intérprete seja especificada corretamente.
Riking 31/08/19
24

Brainfuck com modificação automática , 16 bytes, $ 124444

<.<++.+.++..../$

Experimente online!

user202729
fonte
11
Você não acabou usando o :, então você pode removê-lo e adicionar outro +por US $ 124444.
Nitrodon
@ Nitrodon Ah certo, obrigado.
user202729
Depois de imprimir 1, por que não contar até 3e depois imprimir apenas 3s? Você salvaria um byte e imprimiria um número maior.
12431234123412341234123
@ 12431234123412341234123 Você precisaria salvar dois bytes. Caso contrário, com 15 bytes, você só poderá receber US $ 131199, US $ 133333 é demais.
hvd 28/08
21

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.

$<?=ERA;

Isso apenas tira proveito das tags curtas do PHP e do PHP construído em constantes.

Experimente online!

mschuett
fonte
11
Ha eu vou trocá-lo para outra coisa amanhã
mschuett
4
Em vez de <?="$"., basta fazer $<?=e salvar alguns bytes.
Ismael Miguel
2
@IsmaelMiguel nice thanks! Reduzi para 8 bytes, mas não demorou o suficiente para descobrir como obter os outros ~ 70k do meu salário.
mschuett
11
uau não sabia sobre essa constante, mas não consegui encontrar nos documentos, alguém pode ajudar nisso?
Rafee
3
@ Rafee, na verdade, não está documentado em nenhum lugar que eu possa encontrar. É uma constante de linguagem que foi adicionada há 17 anos github.com/php/php-src/commit/… . Eu o encontrei despejando todas as constantes disponíveis e depois começando a grep pelas menores. Parece ser fornecido pelo OS visto aqui gnu.org/software/libc/manual/pdf/libc.pdf na página 195.
mschuett
17

GS2 , 5 bytes, US $ 291.000

•$☺↔∟

Esta é uma representação CP437 do código fonte binário.

Experimente online!

Como funciona

•$     Push '$'.
  ☺↔   Push 29.
    ∟  Push 1000.
Dennis
fonte
17

Excel 19 bytes $ 107899.616068361

="$"&CODE("(")^PI()

Explicação:

     CODE("(")        // find ASCII code of ( which is 40
              ^PI()   // raise to power of Pi  (40^3.141592654)
 "$"&                 // append $ to the front of it
=                     // set it to the cell value and display
Keeta
fonte
2
Bem-vindo ao PPCG!
Luis felipe De jesus Munoz
6
+1 Melhor ainda, eles ficarão impressionados com suas habilidades em Excel e desejam que você seja um gerente de contas.
theREALyumdub
2
@theREALyumdub isso deveria ser uma coisa boa? Eu não tenho certeza que eu tomar este salário se isso significa que eu tenho que trabalhar com o Excel na diária;)
Aaron
Eu argumentaria com a formatação contábil do Excel, que você pode pular completamente o $ e simplesmente definir a formatação como contabilidade.
Selkie
O formato @Selkie Accounting adiciona uma vírgula, o que não é permitido. Você pode usar um formato personalizado de $ #. Não tenho certeza se devo contar isso como 15 caracteres com = CODE ("*") ^ PI () por US $ 125773 ou 17 caracteres (adicionando 2 para as letras do formato) com = CODE (")") ^ PI () por US $ 116603 ou se isso não for permitido.
Keeta
12

Vim, $ 99999 $ 110000 $ 120000

i$=&pvh*&ur

Experimente 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.

Maçaneta da porta
fonte
12

Jelly ,  $ 256000 $ 256256  (6 bytes ) $ 257256

⁹‘”$;;

Um programa completo. (O salário máximo atingível em 6 bytes é $ 260847.43)

Experimente online!

Quão?

⁹‘”$;; - Main Link: no arguments
⁹      - Literal 256                            256
 ‘     - increment                              257
  ”$   - single '$' character                   '$'
    ;  - concatenate                            ['$',257]
     ; - concatenate                            ['$',257,256]
       - implicit print                      -> $257256

Anterior...

5 bytes $ 256256

”$;⁹⁺

('$' concatena 256, repita 256 - causando impressão implícita provisória)

6 bytes $ 256000:

⁹×ȷṭ”$

(256 × 1000 ṭack '$')

Jonathan Allan
fonte
11
Parece 5 caracteres , mas 11 bytes .
dotancohen 26/08/18
9
@dotancohen Jelly usa uma página de código personalizada .
Carmeister
@Carmeister: Nice!
dotancohen
$ 256512
NieDzejkob
@NieDzejkob fato 6 bytes estão disponíveis - I tem R $ 257256 agora :)
Jonathan Allan
11

C #

Programa completo, 72 bytes, $ 40448 66 bytes, $ 43008

class P{static void Main()=>System.Console.Write("$"+('T'<<'i'));}

Experimente online!

Explicação

O operador do turno esquerdo trata caracteres 'T'e 'i'como números inteiros 84 e 105 respectivamente e executa o turno

Lambda, 19 bytes, US $ 109568 17 bytes, US $ 118784

o=>"$"+('t'<<'j')

Experimente online!

Editar Obrigado a @ LegionMammal978 e @Kevin por salvar 2 bytes

pmysl
fonte
5
Apenas curioso, por que você inclui um ponto e vírgula no final da sua lambda?
LegionMammal978
11
Além do que @ LegionMammal978 mencionado (arrastando semi-dois pontos não tem que ser contado no byte-count para Java / C # lambdas), tomando um parâmetro não utilizado vazia você pode golfe do ()=>que o=>para uma -1 byte adicional.
Kevin Cruijssen 28/08
2
De fato, com o @ Kevin e o meu conselho, o lambda pode ser o=>"$"+('t'<<'j')jogado com $ 118784.
LegionMammal978
@ Kevin eu não sabia disso, obrigado pela informação.
pmysl
@ LegionMammal978 Obrigado por apontar ponto e vírgula desnecessário e por fornecer lambda atualizado. Devo ter esquecido este ponto e vírgula alguma forma
pmysl
9

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.

$<?=date(ZL);

Isso coloca Zo fuso horário em segundos e acrescenta se é ou não um ano bissexto.

aslum
fonte
9

brainfuck , 43 bytes, $ 58888

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

Experimente online!

Como funciona

++++++[>++++++<-]>.  write 36 to cell one and print (36 is ASCII for $)

<++++[>++++<-]>+.    add 17 to cell 1 and print (cell 1 is now 53, ASCII for 5) 

+++....              add 3 to cell 1 and print 4 times (cell 1 is now 56, ASCII for 8)
Prismo
fonte
11
Bem-vindo ao PPCG! Espero que você permaneça por aí #
Jo King
8

Python 3 , (22 bytes) $ 98.442

print('$',ord('𘂊'))

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).

Jonathan Allan
fonte
você pode fazer um pouco melhor do que isso usando as seqüências de caracteres f: print (f "$ {ord ('𘫿')}") é de 21 bytes e gera $ 101119
Matt
2
@ Matt que é de 24 bytes (Pensei f-string mas percebeu que as chaves extras custaria 2 bytes)
Jonathan Allan
Prova de que o Python 2 ganhará um salário mais alto.
mbomb007 29/05
8

Gol> <> , $ 207680 em 8 bytes

'o**n; $

Experimente online!

Como funciona:

'        Start string interpretation. Pushes the ASCII value of every character until it wraps back around to this character
 o       Output the top stack value as ASCII. This is the $ at the end of the code
  **     Multiply the top 3 stack values (This is the ASCII of 'n; ', 110*59*32
    n    Output top of stack as integer.
     ;   Terminate program
       $ (Not run, used for printing the $)

Curiosamente, você pode usar em hvez de n;, 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

xornob
fonte
11
Bem-vindo ao PPCG!
Mego
6

Geléia , 8 bytes, $ 210176.48625619375

⁽½"×½”$,

3535 ( ⁽½") multipli ( ×) ed pelo seu sqrt ( ½).

Experimente online!

user202729
fonte
6

Mathematica, 18 bytes, US $ 107.163,49

$~Print~N[E^(E!E)]

Programa completo; correr usando MathematicaScipt -script. Saídas $107163.4882807548seguidas 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]exprPiEI+-* /()!

LegionMammal978
fonte
Que tal I?
user202729
@ user202729 Não, não ajuda; qualquer número que realmente use Ie não apenas I Iou I/Ique geralmente tenha uma + 0.*Itachinha N.
LegionMammal978
Muito agradável! Eu tinha chegado até "$"~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.
Misha Lavrov
O que eu vim com foi Print [$, N [Pi ^ (Pi * Pi)]], dando $ 80662,7. Eu tentei várias combinações de Pi, E, +, *, ^ (pensei em eu, mas não vi nenhuma maneira eficaz de usá-lo), mas nunca me ocorreu tentar!
Meni Rosenfeld
$~Print~⌈E^(E!E)⌉com caracteres de teto esquerdo e direito com um caractere, seria um pouco mais e 17 bytes
jaeyong cantado em 9/02
6

05AB1E (5 bytes), $ 262626

'$₂ÐJ

Experimente online!

262626<299069$26["$", 26, 26, 26]J

Mr. Xcoder
fonte
6

JavaScript (Node.js) , 23 bytes, $ 65535

_=>"$"+ +(~~[]+`xFFFF`)

Experimente online!

Esse é o melhor que eu posso ficar sem atob, embora exista um grande espaço de melhoria tbh

Você 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

_=>"$"+`𓂻`.codePointAt(![])

Experimente online!

ou: 29 bytes, US $ 80020

_=>"$"+`򀀠`.codePointAt(!_)

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

_=>"$十三萬"
Shieru Asakoto
fonte
Então, por que não _=>"$⑮萬"^ _ ^
tsh
2
Eu estou rindo agora, porque eu posso entender os chineses ...
ericw31415
Que tal x1683F?
Gust van de Wal
Simplesmente usar _=>"$"+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 ...
Gust van de Wal
@GustVanDeWal, infelizmente, você não pode usar dígitos no código.
Shieru Asakoto
6

MATLAB, 17 bytes, $ 112222

['$','..////'+pi]

Resposta antiga:

['$','RRUUTR'-'!']
Max Radin
fonte
11
bom usar a conversão automática do código ascii graças ao +pi
Hoki
e não é uma constante embutida no matlab
Majestas 32
6

Ruby, $ 119443

$><<?$<<?𝊓.ord

Experimente online!

A saída inteira máxima para 17 bytes. O caractere Unicode é U + 1D293, que é 119443 em hexadecimal.

Maçaneta da porta
fonte
Se você quiser se arriscar, tente os 10 bytes $><<?$<<$$em um sistema de longa duração. Respostas até 177827 são válidas.
AShelly
Eu acho que você quer dizer "em decimal" ou pelo menos há alguma ambiguidade.
Jpmc26 01/09/19
5

Japt, 5 bytes, $ 262144

'$+I³

Teste-o


A explicação Ié a constante de Japt para 64, ³cuba-a e '$+concatena-a com o símbolo do dólar.

Shaggy
fonte
Ainda bem que verifiquei primeiro. Eu estava prestes a postar"${I³
Oliver
5

Befunge-98 (PyFunge) , 8 bytes, US $ 209728

$",**.q:

Experimente online!

O caractere :foi calculado usando o seguinte método:

>>> chr(int((1_000_000 * 8 ** -0.75) / (ord(' ') * ord('q'))))
':'

Usando @e ftambém funciona, mas dá apenas $ 208896.

Vincent
fonte
5

Befunge-93 , 9 bytes, $ 192448

a>$",**.@

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:

a>$        Basically no-ops
   "       Wrapping string that pushes the code and a lot of spaces to the stack
    ,      Print the $
     **    Multiply the byte values of a, > and a space
           62*97*32 = 192448
       .@  Print the number and terminate
Brincadeira
fonte
5

Cubix , $ 155088 (12 bytes)

*Ouo'ე'$/@

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 baixo

MickyT
fonte