Sin usar números, obtenga el salario más alto posible. ¡Pero no exageres!


227

Mientras solicito algunos trabajos cuyo anuncio de empleo no establece el salario, imaginé a un entrevistador particularmente malvado que le daría al candidato la posibilidad de decidir su propio salario ... ¡"jugando al golf"!

Entonces es simplemente así:

Sin usar números, escriba un código que genere el salario anual que le gustaría que le ofrecieran.

Sin embargo, poder escribir código conciso es una piedra angular de esta empresa. Así que han implementado una escalera de antigüedad muy ajustada donde

los empleadores que escriben código de b bytes de largo pueden ganar un máximo de ($ 1'000'000) · b -0.75 .

estamos mirando (estas son las partes enteras, solo por razones de visualización):

   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

El reto

Escriba un programa o función que no ingrese y genere un texto que contenga un signo de dólar ( $, U + 0024) y una representación decimal de un número (entero o real).

  • Su código no puede contener los caracteres 0123456789.

En la salida:

  • Opcionalmente, puede haber un espacio único entre el signo de dólar y el número.

  • Los espacios en blanco al final y al final y las nuevas líneas son aceptables, pero cualquier otro resultado está prohibido.

  • El número debe expresarse como un número decimal utilizando solo los caracteres 0123456789.. Esto excluye el uso de notación científica.

  • Se permite cualquier número de decimales.

Una entrada es válida si el valor que genera no es mayor que ($ 1'000'000) · b -0.75 , donde b es la longitud de bytes del código fuente.

Ejemplo de salida (las comillas no deben salir)

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

El marcador

¡El valor que genera es su puntaje! (El salario más alto gana, por supuesto).


Tabla de clasificación

Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.

Para asegurarse de que su respuesta se muestre, comience con un título, utilizando la siguiente plantilla de Markdown:

# Language Name, $X (Y bytes)

dónde Xestá su salario y Yel tamaño de su presentación. ( Y bytesPuede estar en cualquier parte de su respuesta). Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:

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

También puede hacer que el nombre del idioma sea un enlace, que luego aparecerá en el fragmento de la tabla de clasificación:

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


Editar: puntaje máximo permitido (redondeado) por conteo de bytes, para una referencia más rápida, envíe un texto aquí :

ingrese la descripción de la imagen aquí


61
Este es uno de los muy pocos (imo) desafíos exitosos no aleatorios sin entrada de salida no fija. Idea única!
Sr. Xcoder

2
Buen desafío! ¿Podemos generar un valor de moneda con formato completo, si lo deseamos? Me gusta en $80,662.67lugar de $80662.6659? Sus reglas parecen excluir la coma, lo que significa que no podría usar ninguna función de moneda incorporada.
BradC

66
Espero que no te importe, he agregado una variación del fragmento de tabla de clasificación que se clasifica por puntuación en lugar de bytes. Excelente primer desafío!
ETHproductions

99
Acabo de notar la nueva etiqueta de contribuyente. Desafío bien construido, con un voto tan alto y una gran cantidad de respuestas en solo unos días, me pregunto si esto podría ser elegible para el Novato del Año de este año;)
Shieru Asakoto

2
Nominé este desafío como candidato para la categoría "Novato del año: desafíos" en Best of PPCG 2018, como dije en ese momento.
Shieru Asakoto

Respuestas:


109

fiesta, $ 127127

x;echo \$$?$?

Pruébalo en línea!

Dado que el xcomando no existe, produce errores y establece el código de salida en 127.

Luego, el código genera un signo de dólar seguido de $?dos veces. La $?variable almacena el código de salida del comando anterior, por lo que se genera $127127en 13 bytes .


52
Curiosamente, si estás en Mac y tiene instalado XQuartz, esto no va a funcionar porque x no existe. Como beneficio adicional, se bloqueó al intentar abrirlo, ¡así que obtuve en su $11lugar!
numbermaniac

13
Uso en ]lugar de x, el primero es menos probable que exista.
pts

@numbermaniac Además, se encontraron dichos comandos para instalar en ubuntu 19.04: e, q, r. Pero wes una cosa (cercana who) y sale con éxito, ¡así que obtienes $ 00 por ello!
val

67

Java 8, $ 131,199.00 (15 bytes)

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

Pruébalo en línea.

Explicación:

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

Utilicé un programa para generar un carácter ASCII imprimible en el rango [32, 126]que, al dividir 131199, tendría la menor cantidad de valores decimales. Como se 101puede dividir 131199equitativamente, lo que resulta 1299es que solo me faltan 31 centavos de mi salario máximo posible según mi recuento de bytes de 15.


12
Dang, puntaje impresionantemente eficiente!
ETHproductions


41

CJam , (5 bytes) $ 294204.018 ...

'$PB#

Pruébalo en línea!

Explicación:

Lo deduje de la respuesta de Dennis, pero busqué combinaciones de números que produjeran un resultado más alto. Casi me , pero vi que esa Pes la variable para , y que . La letra tiene un valor de 11 en CJam, dando el código anterior.π 11294000ππ11294000B


66
Como su puntaje es su salario, debe mencionarlo en el encabezado. Esta respuesta está ganando actualmente. :)
Dennis

37

R , 20 bytes,$103540.9

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

Pruébalo en línea!

El máximo para 20 bytes es $105737.1, ¡así que esto está bastante cerca del límite salarial!

Este sería un buen aumento, y si me pagan por hacer golf de código ...


2
podría ser una forma de combinarse picon la suma de un conjunto de datos ... requeriría un enfoque programático para evaluar varias combinaciones de operadores / conjuntos de datos / pi para acercarse lo máximo posible al máximo. No hay tiempo para esto ahora, pero parece un buen desafío en sí mismo.
JayCe

29

GS2 , (5 bytes) $ 292,929

•$☺↔A

Un programa completo (que se muestra aquí usando la página de códigos 437 ). (Salario máximo alcanzable @ 5 bytes es $ 299069.75)

Pruébalo en línea!

Se basa en la respuesta GS2 de Dennis ...

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

1
Eso es 11 bytes, incluso si son 5 caracteres.
dotancohen

3
@dotancohen: 0x0724011d41es 5 bytes por mi cuenta ...
eggyal

2
@eggyal: me perdí un poco sobre la página de códigos 437. ¡Buen toque!
dotancohen

3
Estimado votante negativo, ¿podría tener algún comentario por favor; No veo lo que es incorrecto, no es útil o no está claro.
Jonathan Allan

27

R , 21 bytes $ 99649.9

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

Pruébalo en línea!

Un Renfoque diferente : vea también la respuesta de Giuseppe

Muy cerca del máximo de $ 101937 para este bytecount.

Prima: object.size()

R , 24 bytes $ 89096

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

Pruébalo en línea!

Probablemente esto depende del sistema, pero cuando hice esto en TIO obtuve $ 89096, cerca del límite de 92223 para 24 bytes.


¡ordenado! Pensé en tratar de elegir un buen conjunto de datos, pero no puedo averiguar dónde buscar para encontrarlos ... Supongo que el datasetspaquete tiene mucho sentido.
Giuseppe

@Giuseppe Solo lo intento prody sumal azar ... ¡pero la producción aumenta demasiado rápido!
JayCe

sum(volcano)es 690907pero eso tendría que ser aproximadamente 1 byte para trabajar, jaja
Giuseppe

¡Gran idea usando conjuntos de datos!
digEmAll

@Giuseppe buena captura ¡Lo había pasado por alto por completo! duh
JayCe

26

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

_=>atob`JDEwOTgzOQ`

Pruébalo en línea!

109839109884


Sin atob()(Node.js), 26 bytes, $ 86,126

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

Pruébalo en línea!

La concatenación de '$' con los códigos ASCII de 'V' (86) y '~' (126).


Wow Buffer. Primera vez en reconocer esta clase; ')
Shieru Asakoto

1
@ user71546 Se podría hacer en 24 bytes por $ 91,126 si se permitieran miles de separadores. Pero aparentemente, no son ... :(
Arnauld

Bufferel constructor está en desuso, por lo que se
alargará

@mcfedr No nos interesa el código de golf, siempre que se especifique correctamente una versión de trabajo del intérprete.
Riking

24

Brainfuck auto modificable , 16 bytes, $ 124444

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

Pruébalo en línea!


1
No terminaste usando el :, así que puedes eliminarlo y agregar otro +por $ 124444.
Nitrodon

@ Nitrodon Ah, claro, gracias.
user202729

Después de imprimir 1, ¿por qué no contar 3y luego imprimir solo 3s? Guardaría un byte e imprimiría un número más alto.
12431234123412341234123

@ 12431234123412341234123 Debería guardar dos bytes. De lo contrario, con 15 bytes, solo se le permite hasta $ 131199, $ 133333 es demasiado.
hvd

21

PHP, $ 131116 (8 bytes)

No vi uno para php y quería lanzar uno. Sé que en algún lugar de PHP hay un tipo de letra incorrecto que reduciría esto a la mitad, pero no puedo encontrarlo en este momento.

$<?=ERA;

Esto solo aprovecha las etiquetas cortas de PHP y las constantes integradas de PHP.

Pruébalo en línea!


1
Ja, lo
cambiaré

44
En lugar de <?="$".hacerlo, solo haz $<?=y guarda algunos bytes.
Ismael Miguel

2
@IsmaelMiguel agradable gracias! Lo reduje a 8 bytes, pero no tardé lo suficiente en descubrir cómo obtener los otros ~ 70k de mi salario.
mschuett

1
wow no sabía acerca de esta constante, pero no pude encontrar en documentos, ¿alguien puede ayudar en esto?
Rafee

3
@Rafee en realidad no está documentado ningún lugar que pueda encontrar. Es una constante de lenguaje que se agregó hace 17 años github.com/php/php-src/commit/… . Lo encontré volcando todas las constantes disponibles y luego comenzando a buscar las más cortas. Parece ser proporcionado por el sistema operativo visto aquí gnu.org/software/libc/manual/pdf/libc.pdf en la página 195.
mschuett


17

Excel 19 bytes $ 107899.616068361

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

Explicación:

     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
Bienvenido a PPCG!
Luis felipe De jesus Munoz

66
+1 Aún mejor, quedarán impresionados con tus habilidades de Excel y querrán que seas un administrador de cuentas.
theREALyumdub

2
@theREALyumdub ¿se supone que eso es algo bueno? No estoy seguro de tomar este salario si eso significa que tengo que trabajar con Excel a diario;)
Aaron

Yo discutiría con el formato de contabilidad de Excel, que puede omitir el $ por completo y simplemente configurar el formato de contabilidad.
Selkie

El formato @Selkie Accounting agrega una coma, que no está permitida. Sin embargo, podría usar un formato personalizado de $ #. No estaría seguro si debería contar esto como 15 caracteres con = CÓDIGO ("*") ^ PI () por $ 125773, o 17 caracteres (agregando 2 para las letras de formato) con = CÓDIGO (")") ^ PI () por $ 116603, o si esto no está permitido.
Keeta

12

vim, $ 99999 $ 110000 $ 120000

i$=&pvh*&ur

Pruébalo en línea!

Utiliza el registro de expresión (tenga en cuenta que hay un carácter <Cr>, que es invisible en la mayoría de las fuentes, entre $y =, para un total de 13 bytes ) para insertar el valor de la 'pvh'opción por el valor de la 'ur'opción.

'previewheight' es la opción que controla la altura de las ventanas de vista previa, que es 12 por defecto.

'undoreload' es el número máximo de líneas que puede tener un búfer antes de que vim deje de almacenarlo en la memoria para deshacer, y su valor predeterminado es 10,000.


12

Jalea ,  $ 256256 $ 256000  (6 bytes ) $ 257.256

⁹‘”$;;

Un programa completo (El salario máximo alcanzable a 6 bytes es $ 260847.43)

Pruébalo en línea!

¿Cómo?

⁹‘”$;; - 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, repite 256, causando impresión implícita provisional)

6 bytes $ 256000:

⁹×ȷṭ”$

(256 × 1000 ṭack '$')


1
Eso parece 5 caracteres , pero 11 bytes .
dotancohen

99
@dotancohen Jelly usa una página de códigos personalizada .
Carmeister

@Carmeister: ¡Qué bien!
dotancohen


@NieDzejkob de hecho 6 bytes están disponibles - Tengo $ 257256 ahora :)
Jonathan Allan

11

C#

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

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

Pruébalo en línea!

Explicación

El operador de desplazamiento a la izquierda trata los caracteres 'T'y los 'i'enteros 84 y 105 respectivamente y realiza el desplazamiento

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

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

Pruébalo en línea!

Editar Gracias a @ LegionMammal978 y @Kevin por guardar 2 bytes


55
Por curiosidad, ¿por qué incluye un punto y coma en el extremo de su lambda?
LegionMammal978

1
Además de lo mencionado @ LegionMammal978 (trailing punto y coma no tiene que ser contados en el byte recuento para Java / C # lambdas), mediante la adopción de un parámetro vacío no utilizado se puede jugar golf el ()=>que o=>para un byte adicional -1.
Kevin Cruijssen

2
De hecho, con el consejo de @ Kevin y mi consejo, la lambda se puede jugar o=>"$"+('t'<<'j')con $ 118784.
LegionMammal978

@ Kevin No sabía sobre esto, gracias por la información.
pmysl

@ LegionMammal978 Gracias por señalar punto y coma innecesarios y por proporcionar lambda actualizada. Debo haber pasado por alto este punto y coma de alguna manera
pmysl

9

PHP, 13 bytes, salario de $ 144000

Desafortunadamente para este trabajo, se requiere mudarme a Mauricio (bueno, podría mudarme un poco menos hacia el este, sin embargo, cada zona horaria menos generaría una caída salarial de $ 36k). Para compensar las molestias, mi salario aumenta en $ 1 cada año bisiesto.

$<?=date(ZL);

Esto solo muestra Zla zona horaria en segundos y agrega si es o no un año bisiesto.


9

brainfuck , 43 bytes, $ 58888

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

Pruébalo en línea!

Cómo 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)

1
Bienvenido a PPCG! Espero que te quedes
Jo King

8

Python 3 , (22 bytes) $ 98,442

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

Pruébalo en línea!

Al igual que la respuesta de Ruby de Doorknob , el carácter Unicode de 4 bytes utilizado aquí 𘂊, tiene un valor ordinal del salario entero máximo alcanzable en 22 bytes.

Tenga en cuenta que print()imprime sus argumentos sin nombre separados por espacios de forma predeterminada ( sepes un argumento con nombre opcional).


puede hacerlo un poco mejor que eso usando las cadenas f: print (f "$ {ord ('𘫿')}") tiene 21 bytes y genera $ 101119
Matt

2
@Matt de 24 bytes (pensé en f-string pero me di cuenta de que las llaves adicionales costarían 2 bytes)
Jonathan Allan

Prueba de que Python 2 ganará un salario más alto.
mbomb007

8

Gol> <> , $ 207680 en 8 bytes

'o**n; $

Pruébalo en línea!

Cómo 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, puede usar en hlugar de n;, lo que arroja 'o**h5$un puntaje de $ 231504, pero no puede usar 0-9, y no hay otra forma de 1 byte para empujar 53, el valor ASCII de5


1
Bienvenido a PPCG!
Mego


6

Mathematica, 18 bytes, $ 107,163.49

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

Programa completo; correr usando MathematicaScipt -script. Salidas $107163.4882807548seguidas de una nueva línea final. He comprobado que esta es la solución más anotador de la forma en que se compone de , , , y .$~Print~N[expr]exprPiEI+-* /()!


¿Qué hay de I?
user202729

@ user202729 No, no ayuda; cualquier número que realmente use Iy no solo I Io I/Igeneralmente tendrá un + 0.*Itachuelas en él N.
LegionMammal978

¡Muy agradable! Había llegado tan lejos "$"~Print~Exp[E!N@E](que tiene la misma longitud que "$"~Print~N[E^(E!E)]), pero con las comillas alrededor $, la salida apenas superaba el límite.
Misha Lavrov

Lo que se me ocurrió fue Imprimir [$, N [Pi ^ (Pi * Pi)]], dando $ 80662.7. Probé varias combinaciones de Pi, E, +, *, ^ (pensé en mí pero no vi ninguna forma efectiva de usarlo), ¡pero nunca se me ocurrió intentarlo!
Meni Rosenfeld

$~Print~⌈E^(E!E)⌉con caracteres de techo izquierdo y derecho con un carácter sería un poco más y 17 bytes
jaeyong cantó


6

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

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

Pruébalo en línea!

Esto es lo mejor que puedo obtener sin atobembargo, aunque hay un gran espacio de mejora tbh

Ya sabes, no tener una función de conversión de caracteres cortos a ASCII es MUCHO.

DESPUÉS DE UN DÍA ENTERO

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

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

Pruébalo en línea!

o: 29 bytes, $ 80020

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

Donde 򀀠estaU+13894 INVALID CHARACTER

Oh String.codePointAt! ¡Me he olvidado por completo de esto!

Una broma (15B, $ 130000), no valdrá en absoluto sino solo por diversión

_=>"$十三萬"

Entonces, ¿por qué no _=>"$⑮萬"^ _ ^
tsh

2
Me estoy riendo en este momento porque puedo entender a los chinos ...
ericw31415

¿Qué tal x1683F?
Gust van de Wal

Simplemente usar _=>"$"+parseInt('1V0I',36)también es más alto que lo que tienes hasta ahora, por lo que es posible que desees agregar ese también. Lástima que no pueda convertir la base 64 a decimal en JavaScript ...
Gust van de Wal

@GustVanDeWal lamentablemente no puedes usar dígitos en el código.
Shieru Asakoto

6

MATLAB, 17 bytes, $ 112222

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

Vieja respuesta:

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

1
uno agradable para usar la conversión automática del código ASCII gracias a la+pi
Hoki

e no es una constante
integrada

6

Rubí, $ 119443

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

Pruébalo en línea!

La salida entera máxima para 17 bytes. El carácter Unicode es U + 1D293, que es 119443 en hexadecimal.


Si quieres arriesgarte, prueba los 10 bytes $><<?$<<$$en un sistema de larga duración. Las respuestas hasta 177827 son válidas.
AShelly

Creo que te refieres a "en decimal", o al menos hay cierta ambigüedad.
jpmc26


5

Japt, 5 bytes, $ 262144

'$+I³

Pruébalo


La explicación Ies la constante Japt para 64, la ³cubica y luego la '$+concatena con el símbolo del dólar.


Me alegro de haberlo comprobado primero. Estaba a punto de publicar"${I³
Oliver

5

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

$",**.q:

Pruébalo en línea!

El personaje :se ha calculado utilizando el siguiente método:

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

El uso @y ftambién funciona, pero sólo da $ 208896.


5

Befunge-93 , 9 bytes, $ 192448

a>$",**.@

Pruébalo en línea!

Salidas $192448, solo dos dólares y nueve centavos por debajo del máximo. ¡Esto incluso funciona como un políglota con implementaciones adecuadas de Befunge-98 , donde ni siquiera tiene que arrojar un error de instrucción no reconocido!

Explicación:

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

*Ouo'ე'$/@

Pruébalo en línea!

Un problema interesante era esperar reducirlo a 7 u 8 bytes, pero resultó difícil. Empuja los caracteres ე y $ a la pila, genera el $, multiplica la parte superior de la pila, genera el número y se detiene. Todavía espero encontrar una opción de byte inferior

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.