Senza usare i numeri, ottieni lo stipendio più alto che puoi. Ma non esagerare!


227

Mentre faccio domanda per alcuni lavori il cui annuncio di lavoro non indica lo stipendio, ho immaginato un intervistatore particolarmente malvagio che avrebbe dato al candidato la possibilità di decidere il proprio stipendio ... "giocando a golf"!

Quindi va semplicemente così:

Senza utilizzare i numeri, scrivi un codice che genera lo stipendio annuale che desideri offrire.

Tuttavia, essere in grado di scrivere codice conciso è una pietra angolare di questa azienda. Quindi hanno implementato una scala di anzianità molto stretta dove

i datori di lavoro che scrivono codice che è lungo b byte possono guadagnare un massimo di ($ 1'000'000) · b -0,75 .

stiamo osservando (queste sono le parti intere, solo per motivi di visualizzazione):

   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

La sfida

Scrivi un programma o una funzione che non accetta input e genera un testo contenente un simbolo di dollaro ( $, U + 0024) e una rappresentazione decimale di un numero (intero o reale).

  • Il tuo codice non può contenere i caratteri 0123456789.

Nell'output:

  • Opzionalmente può esserci un singolo spazio tra il simbolo del dollaro e il numero.

  • Gli spazi bianchi finali e iniziali e le nuove linee sono accettabili, ma è vietato qualsiasi altro output.

  • Il numero deve essere espresso come un numero decimale utilizzando solo i caratteri 0123456789.. Ciò esclude l'uso della notazione scientifica.

  • È consentito qualsiasi numero di cifre decimali.

Una voce è valida se il valore che emette non è maggiore di ($ 1'000'000) · b -0,75 , dove b è la lunghezza in byte del codice sorgente.

Esempio di output (le virgolette non devono essere output)

"$ 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

Il punteggio

Il valore che hai emesso è il tuo punteggio! (Il salario più alto vince, ovviamente.)


Classifica

Ecco uno snippet di stack per generare sia una classifica regolare che una panoramica dei vincitori per lingua.

Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, utilizzando il seguente modello Markdown:

# Language Name, $X (Y bytes)

dov'è il Xtuo stipendio ed Yè la dimensione della tua presentazione. ( Y bytesPuò essere ovunque nella tua risposta.) Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:

# Ruby, <s>$111111.111... (18 bytes)</s> <s>$111999 (17 bytes)</s> $123456 (16 bytes)

Puoi anche rendere il nome della lingua un collegamento, che verrà quindi visualizzato nello snippet della classifica:

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


Modifica: punteggio massimo (arrotondato) massimo per conteggio byte, per un riferimento più rapido - testo qui :

inserisci qui la descrizione dell'immagine


61
Questa è una delle pochissime (imo) sfide non casuali di successo a input fisso non fisso. Idea unica!
Mr. Xcoder,

2
Bella sfida! Se lo desideriamo, possiamo generare un valore di valuta completamente formattato? Come $80,662.67invece di $80662.6659? Le tue regole sembrano precludere la virgola, il che significa che non potrei usare alcuna funzione di valuta integrata.
BradC,

6
Spero non ti dispiaccia, ho aggiunto una variante dello snippet della classifica che ordina per punteggio anziché byte. Ottima prima sfida!
ETHproductions

9
Ho appena notato il nuovo tag contributore. Sfida ben costruita, con un così alto voto e una grande quantità di risposte in pochi giorni, mi chiedo se questo potrebbe essere ammissibile per il "Rookie of the Year di quest'anno;)
Shieru Asakoto,

2
Ho nominato questa sfida come candidata per la categoria "Rookie of the Year - Challenges" nel Best of PPCG 2018, come ho detto allora.
Shieru Asakoto,

Risposte:


109

bash, $ 127127

x;echo \$$?$?

Provalo online!

Poiché il xcomando non esiste, si verifica un errore e imposta il codice di uscita su 127.

Quindi, il codice genera un segno di dollaro seguito da $?due volte. La $?variabile memorizza il codice di uscita del comando precedente, quindi questo emette $127127in 13 byte .


52
Stranamente se siete su Mac e si è installato XQuartz, questo non funzionerà, perché x non esiste. Come bonus, si è schiantato durante il tentativo di aprirlo, quindi ho ottenuto $11invece!
numbermaniac,

13
Usa ]invece di x, il primo ha meno probabilità di esistere.
punti

@numbermaniac Inoltre, tali comandi sono stati trovati per l'installazione su Ubuntu 19.04: e, q, r. Ma wè una cosa (vicino a who) e uscire con successo, quindi ottieni $ 00 per questo!
val

67

Java 8, $ 131.199,00 (15 byte)

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

Provalo online.

Spiegazione:

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

Ho usato un programma per generare un carattere ASCII stampabile nell'intervallo [32, 126]che, durante la divisione 131199, avrebbe la quantità più bassa di valori decimali. Dal momento che 101può dividere 131199equamente, risultando 1299, sono solo 31 centesimi in meno del mio stipendio massimo possibile in base al mio conteggio dei byte di 15.


12
Dang, punteggio straordinariamente efficiente!
ETHproductions

42

CJam , 5 byte, $ 262'144

'$YI#

Provalo online!

Come funziona

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

41

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

'$PB#

Provalo online!

Spiegazione:

Pππ11294000B


6
Poiché il tuo punteggio è il tuo stipendio, dovresti menzionarlo nell'intestazione. Questa risposta è attualmente vincente. :)
Dennis,

37

R , 20 byte,$103540.9

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

Provalo online!

Il massimo per 20 byte è $105737.1, quindi è abbastanza vicino al limite di stipendio!

Sarebbe un bel rilancio, e se venissi pagato per fare il golf del codice ......


2
potrebbe essere un modo per combinare picon la somma di un set di dati ... richiederebbe un approccio programmatico per valutare varie combinazioni di operatori / set di dati / pi per avvicinarsi il più possibile al massimo. Non c'è tempo per questo ora, ma suona come una bella sfida in sé.
JayCe,

29

GS2 , (5 byte) $ 292.929

•$☺↔A

Un programma completo (mostrato qui usando la code-page 437 ). (Lo stipendio massimo raggiungibile a 5 byte è $ 299069,75)

Provalo online!

Si basa sulla risposta GS2 di Dennis ...

•$☺↔A                             []
•$    - push '$'                  ['$']
  ☺   - push unsigned byte:
   ↔  -   0x1d = 29               ['$',29]
    A - push top of stack twice   ['$',29,29,29]
      - implicit print            $292929

1
Sono 11 byte, anche se sono 5 caratteri.
dotancohen,

3
@dotancohen: 0x0724011d41sono 5 byte dal mio conteggio ...
Eggyal

2
@eggyal: mi sono perso un po 'di code-page 437. Bel tocco!
dotancohen,

3
Caro votante, potrei avere qualche feedback per favore; Non vedo cosa sia errato, non utile o poco chiaro.
Jonathan Allan,

27

R , 21 byte $ 99649,9

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

Provalo online!

Un Rapproccio diverso - vedi anche la risposta di Giuseppe

Molto vicino al massimo di $ 101937 per questo byte.

Bonus: object.size()

R , 24 byte $ 89096

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

Provalo online!

Questo probabilmente dipende dal sistema, ma quando lo rilancio su TIO ho ottenuto $ 89096 - vicino al limite di 92223 per 24 byte.


pulito! Ho pensato di provare a scegliere un buon set di dati ma non riesco a capire dove cercare per trovarli ... Immagino che il datasetspacchetto abbia molto senso.
Giuseppe,

@Giuseppe ci sto solo provando prode in summodo casuale ... ma prod aumenta troppo in fretta!
JayCe,

sum(volcano)è 690907, ma che avrebbe dovuto essere di circa 1 byte a lavorare, haha
Giuseppe

Ottima idea utilizzando set di dati!
digEmAll

@Giuseppe buona cattura l'avevo completamente trascurato! duh.
JayCe,

26

JavaScript (ES6), 19 byte, $ 109,839

_=>atob`JDEwOTgzOQ`

Provalo online!

109839109884


Senza atob()(Node.js), 26 byte, $ 86.126

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

Provalo online!

La concatenazione di '$' con i codici ASCII di 'V' (86) e '~' (126).


Wow Buffer. Prima volta in assoluto a riconoscere questa lezione; ')
Shieru Asakoto,

1
@ user71546 Potrebbe essere eseguito in 24 byte per $ 91.126 se fossero consentiti migliaia di separatori. Ma a quanto pare, non sono ... :(
Arnauld

BufferIl costruttore è obsoleto, quindi nelle versioni future si
allungherà

@mcfedr Non ci interessa il code golf, purché sia ​​specificata una versione funzionante dell'interprete.
Riking

24

Brainfuck automodificante , 16 byte, $ 124444

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

Provalo online!


1
Non hai finito per usare il :, quindi puoi rimuoverlo e aggiungerne un altro +per $ 124444.
Nitrodon,

@Nitrodon Ah, grazie.
user202729,

Dopo aver stampato il 1, perché non contare 3e quindi stampare solo 3s? Dovresti salvare un byte e stampare un numero più alto.
12431234123412341234123,

@ 12431234123412341234123 Dovresti salvare due byte. Altrimenti, con 15 byte, hai solo un massimo di $ 131199, $ 133333 è troppo.
hvd,

21

PHP, $ 131116 (8 byte)

Non ne ho visto uno per php e volevo vomitare uno. So che un posto in php è un cattivo typecast che lo taglierebbe a metà ma non riesco a trovarlo in questo momento.

$<?=ERA;

Questo sfrutta solo i tag corti PHP e le costanti incorporate in PHP.

Provalo online!


1
Ah, lo cambierò per qualcos'altro domani
mschuett,

4
Invece di <?="$"., basta fare $<?=e salvare alcuni byte.
Ismael Miguel,

2
@IsmaelMiguel simpatico grazie! Sono arrivato a 8 byte, ma non ci è voluto abbastanza per capire come ottenere gli altri ~ 70k del mio stipendio.
mschuett,

1
wow non sapevo di questa costante, ma non riuscivo a trovare nei documenti, qualcuno può aiutarmi su questo?
Rafee,

3
@Rafee in realtà non è documentato nessun posto che posso trovare. È una costante di lingua che è stata aggiunta 17 anni fa github.com/php/php-src/commit/… . L'ho trovato scaricando tutte le costanti disponibili e quindi iniziando a fare grep per quelle più brevi. Sembra essere fornito dal sistema operativo visualizzato qui gnu.org/software/libc/manual/pdf/libc.pdf a pagina 195.
mschuett,

17

GS2 , 5 byte, $ 291'000

•$☺↔∟

Questa è una rappresentazione CP437 del codice sorgente binario.

Provalo online!

Come funziona

•$     Push '$'.
  ☺↔   Push 29.
    ∟  Push 1000.

17

Excel 19 byte $ 107899,616068361

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

Spiegazione:

     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

2
Benvenuti in PPCG!
Luis felipe De jesus Munoz,

6
+1 Ancora meglio, saranno colpiti dalle tue capacità di Excel e vorranno che tu sia un account manager.
theREALyumdub,

2
@theREALyumdub dovrebbe essere una buona cosa? Non sono sicuro di prendere questo stipendio se ciò significa che devo lavorare con Excel ogni giorno;)
Aaron,

Discuterei con la formattazione contabile di Excel, che puoi saltare completamente $ e semplicemente impostare la formattazione su contabilità.
Selkie,

Il formato Contabilità @Selkie aggiunge una virgola, che non è consentita. Tuttavia, puoi utilizzare un formato personalizzato di $ #. Non sarei sicuro se dovrei contare questo come 15 caratteri con = CODICE ("*") ^ PI () per $ 125773 o 17 caratteri (aggiungendo 2 per le lettere del formato) con = CODICE (")") ^ PI () per $ 116603 o se questo non è consentito.
Keeta,

12

Vim, $ 99999 $ 110000 $ 120000

i$=&pvh*&ur

Provalo online!

Utilizza il registro delle espressioni (si noti che esiste un carattere <Cr>, che è invisibile nella maggior parte dei caratteri, tra $e =, per un totale di 13 byte ) per inserire il valore 'pvh'dell'opzione moltiplicato per il valore 'ur'dell'opzione.

'previewheight' è l'opzione che controlla l'altezza delle finestre di anteprima, che è 12 per impostazione predefinita.

'undoreload' è il numero massimo di righe che un buffer può avere prima che vim rinunci a memorizzarlo in memoria per annullarlo, e il suo valore predefinito è 10.000.


12

Gelatina ,  $ 256000 $ 256256  (6 byte ) $ 257256

⁹‘”$;;

Un programma completo. (Lo stipendio massimo raggiungibile a 6 byte è $ 260847,43)

Provalo online!

Come?

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

Precedente...

5 byte $ 256256

”$;⁹⁺

('$' concatena 256, ripeti 256 - causando la stampa implicita temporanea)

6 byte $ 256000:

⁹×ȷṭ”$

(256 × 1000 ṭack '$')


1
Sembra 5 caratteri , ma 11 byte .
dotancohen,

9
@dotancohen Jelly utilizza una tabella codici personalizzata .
Carmeister,

@Carmeister: Nice!
dotancohen,


@NieDzejkob in effetti sono disponibili 6 byte - ora ho $ 257256 :)
Jonathan Allan,

11

C #

Programma completo, 72 byte, $ 40448 66 byte, $ 43008

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

Provalo online!

Spiegazione

L'operatore di spostamento a sinistra tratta i caratteri 'T'e 'i'come interi 84 e 105 rispettivamente ed esegue il turno

Lambda, 19 byte, $ 109568 17 byte, $ 118784

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

Provalo online!

Modifica Grazie a @ LegionMammal978 e @Kevin per aver salvato 2 byte


5
Solo curioso, perché includi un punto e virgola alla fine della tua lambda?
LegionMammal978,

1
Oltre a quanto menzionato da @ LegionMammal978 (i punti e virgola finali non devono essere conteggiati nel conteggio dei byte per Java / C # lambdas), prendendo un parametro vuoto inutilizzato è possibile golfare il ()=>to o=>per un ulteriore -1 byte.
Kevin Cruijssen,

2
In effetti, sia con @ Kevin che con il mio consiglio, la lambda può essere o=>"$"+('t'<<'j')giocata a $ 118784.
LegionMammal978,

@Kevin Non lo sapevo, grazie per le informazioni.
pmysl,

@ LegionMammal978 Grazie per aver sottolineato il punto e virgola non necessario e per aver fornito lambda aggiornato. Devo aver trascurato questo punto e virgola in qualche modo
pmysl

9

PHP, 13 byte, $ 144000 Stipendio

Sfortunatamente per questo lavoro, è necessario trasferirsi a Mauritius (beh, potrei spostarmi leggermente meno verso est, tuttavia ogni fuso orario in meno produrrebbe un calo di $ 36k di stipendio.) Per compensare l'inconveniente, il mio stipendio aumenta di $ 1 ogni anno bisestile.

$<?=date(ZL);

Questo mette semplicemente Zil fuso orario in pochi secondi e aggiunge se è o meno un anno bisestile.


9

brainfuck , 43 byte, $ 58888

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

Provalo online!

Come funziona

++++++[>++++++<-]>.  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)

1
Benvenuti in PPCG! Spero che rimani in giro
Jo King,

8

Python 3 , (22 byte) $ 98,442

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

Provalo online!

Proprio come la risposta Ruby di Doorknob , il carattere Unicode a 4 byte qui usato 𘂊, ha un valore ordinale del massimo stipendio intero ottenibile in 22 byte.

Nota che print()stampa i suoi argomenti senza nome separati da spazi di default ( sepè un argomento chiamato opzionale).


puoi fare un po 'meglio di quello usando le stringhe f: print (f "$ {ord (' 𘫿 ')}") è di 21 byte e genera $ 101119
Matt,

2
@Matt che è di 24 byte (ho pensato alla stringa F ma mi sono reso conto che le parentesi graffe sarebbero costate 2 byte)
Jonathan Allan,

Prova che Python 2 guadagnerà uno stipendio più alto.
mbomb007,

8

Gol> <> , $ 207680 in 8 byte

'o**n; $

Provalo online!

Come funziona:

'        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 $)

È interessante notare che è possibile utilizzare hinvece di n;, che produce 'o**h5$con un punteggio di $ 231504, ma non è possibile utilizzare 0-9 e non esiste un altro modo da 1 byte per spingere 53, il valore ASCII di5


1
Benvenuti in PPCG!
Mego


6

Mathematica, 18 byte, $ 107.163,49

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

Programma completo; corri usando MathematicaScipt -script. Output $107163.4882807548seguiti da una nuova riga finale. Ho verificato che questa è la soluzione più alto punteggio della forma in cui è composto , , , e .$~Print~N[expr]exprPiEI+-* /()!


Che dire I?
user202729,

@ user202729 No, non aiuta; qualsiasi numero che effettivamente utilizza Ie non solo I Io I/Iavrà generalmente una + 0.*Ivirata sul suo N.
LegionMammal978,

Molto bella! Ero arrivato fino a "$"~Print~Exp[E!N@E](che è la stessa lunghezza di "$"~Print~N[E^(E!E)]), ma con le virgolette intorno $, l'output era appena oltre il limite.
Misha Lavrov,

Quello che mi è venuto in mente è stato Print [$, N [Pi ^ (Pi * Pi)]], dando $ 80662,7. Ho provato varie combinazioni di Pi, E, +, *, ^ (pensato a me ma non ho visto alcun modo efficace per usarlo), ma non mi è mai venuto in mente di provare!
Meni Rosenfeld,

$~Print~⌈E^(E!E)⌉con i caratteri del soffitto sinistro e destro con un personaggio sarebbe un po 'più e 17 byte
jaeyong cantato il


6

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

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

Provalo online!

Questo è il meglio che posso ottenere senza atob, anche se c'è un grande spazio di miglioramento tbh

Sai, non avere caratteri corti nella funzione di conversione ASCII fa schifo MOLTO.

DOPO UN INTERO GIORNO

JavaScript (Node.js) , 30 byte, $ 78011

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

Provalo online!

oppure: 29 byte, $ 80020

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

dove 򀀠si trovaU+13894 INVALID CHARACTER

Oh String.codePointAt! L'ho completamente dimenticato!

Uno scherzo (15 miliardi, $ 130000), non vaild affatto ma solo per divertimento

_=>"$十三萬"

Quindi, perché no _=>"$⑮萬"^ _ ^
tsh

2
Sto ridendo proprio adesso perché riesco a capire i cinesi ...
ericw31415

Che ne dici x1683F?
Gust van de Wal,

Anche semplicemente usare _=>"$"+parseInt('1V0I',36)è più alto di quello che hai finora, quindi potresti voler aggiungere anche quello. Peccato che non puoi convertire la base 64 in decimale in JavaScript ...
Gust van de Wal,

@GustVanDeWal purtroppo non puoi usare le cifre nel codice.
Shieru Asakoto,

6

MATLAB, 17 byte, $ 112222

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

Vecchia risposta:

['$','RRUUTR'-'!']

1
bello usare la conversione automatica del codice ascii grazie a+pi
Hoki

e non è una costante incorporata in matlab
Majestas 32

6

Ruby, $ 119443

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

Provalo online!

L'output intero massimo per 17 byte. Il carattere Unicode è U + 1D293, che è 119443 in esadecimale.


Se vuoi rischiare, prova i 10 byte $><<?$<<$$su un sistema a esecuzione prolungata. Le risposte fino al 177827 sono valide.
AShelly,

Penso che intendi "in decimale" o almeno c'è qualche ambiguità.
jpmc26,


5

Japt, 5 byte, $ 262144

'$+I³

Provalo


Spiegazione Iè la costante di Japt 64, la ³cuba e quindi la '$+concatena con il simbolo del dollaro.


Sono contento di aver controllato per primo. Stavo per postare"${I³
Oliver il

5

Befunge-98 (PyFunge) , 8 byte, $ 209728

$",**.q:

Provalo online!

Il personaggio :è stato calcolato usando il seguente metodo:

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

Utilizzando @e ffunziona anche ma dà solo $ 208896.


5

Befunge-93 , 9 byte, $ 192448

a>$",**.@

Provalo online!

Uscite $192448, solo due dollari e nove centesimi in meno del massimo. Funziona anche come un poliglotta con le giuste implementazioni di Befunge-98 , dove non è nemmeno necessario generare un errore di istruzione non riconosciuto!

Spiegazione:

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

5

Cubix , $ 155088 (12 byte)

*Ouo'ე'$/@

Provalo online!

Un problema interessante, speravo di ottenere questo fino a 7 o 8 byte, ma si è rivelato difficile. Spinge i caratteri ე e $ nello stack, genera il $, moltiplica la parte superiore dello stack, genera il numero e si ferma. Spero ancora di trovare un'opzione byte inferiore

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.