Не используя цифры, получите самую высокую зарплату, какую только сможете. Но не преувеличивай!

227

Поскольку я подаю заявку на работу, на которой в объявлении о работе не указана зарплата, я представил себе особенно злого интервьюера, который дал бы кандидату возможность самому определять свою зарплату ... «играя в гольф»!

Так что все идет просто так:

Не используя цифры, напишите код, который выводит годовую зарплату, которую вы хотели бы предложить.

Тем не менее, возможность написать краткий код является краеугольным камнем этой компании. Таким образом, они внедрили очень жесткую лестницу старшинства, где

работодатели, которые пишут код длиной b байтов, могут заработать максимум ($ 100000) · b -0,75 .

мы смотрим (это целые части, просто из соображений отображения):

   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

Соревнование

Напишите программу или функцию, которая не требует ввода и выводит текст, содержащий знак доллара ( $, U + 0024) и десятичное представление числа (целое или действительное).

  • Ваш код не может содержать символы 0123456789.

На выходе:

  • При желании между знаком доллара и числом может быть один пробел.

  • Конечные и ведущие пробелы и новые строки допустимы, но любые другие выходные данные запрещены.

  • Число должно быть выражено как десятичное число, используя только символы 0123456789.. Это исключает использование научных обозначений.

  • Разрешено любое количество знаков после запятой.

Запись действительна, если значение, которое она выводит, не превышает ($ 1'000'000) · b -0,75 , где b - длина байта исходного кода.

Пример вывода (кавычки не должны выводиться)

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

Результат

Значение, которое вы выводите, является вашим счетом! (Самая высокая зарплата выигрывает, конечно.)


Leaderboard

Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.

Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:

# Language Name, $X (Y bytes)

где Xваша зарплата и Yразмер вашего представления. ( Y bytesМожет быть где угодно в вашем ответе.) Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:

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

Вы также можете сделать имя языка ссылкой, которая затем будет отображаться в фрагменте списка лидеров:

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


Изменить: (округленное) максимально допустимое количество очков на количество байтов, для более быстрой ссылки - текст здесь :

введите описание изображения здесь

Никола Сап
источник
61
Это один из очень немногих (imo) успешных неслучайных вызовов без фиксированного вывода. Уникальная идея!
Мистер Кскодер
2
Отличный вызов! Можем ли мы вывести полностью отформатированное значение валюты, если это необходимо? Нравится $80,662.67вместо $80662.6659? Ваши правила, кажется, исключают запятую, что означает, что я не мог использовать какие-либо встроенные функции валюты.
BradC
6
Надеюсь, вы не возражаете, я добавил вариант фрагмента списка лидеров, который сортирует по количеству баллов вместо байтов. Отличный первый вызов!
ETHproductions
9
Только что заметил новый тег участника. Хорошо продуманный вызов, с таким высоким откликом и огромным количеством ответов всего за несколько дней, я задаюсь вопросом, может ли это быть приемлемым для Новичка Года этого года;)
Шиеру Асакото,
2
Я выдвинул эту задачу в качестве кандидата на звание «Новичок года - вызовы» в номинации «Лучший из PPCG 2018», как я тогда говорил.
Шиеру Асакото

Ответы:

109

Баш, $ 127127

x;echo \$$?$?

Попробуйте онлайн!

Так как xкоманда не существует, она ошибается и устанавливает код выхода на 127.

Затем код выводит знак доллара, за которым следует $?дважды. В $?переменном хранит код выхода предыдущей команды, так что это выводит $127127в 13 байт .

Дверная ручка
источник
52
Как ни странно, если вы работаете на Mac и у вас установлен XQuartz, это не сработает, потому x что существует. В качестве бонуса он рухнул при попытке открыть его, поэтому я получил $11вместо этого!
Числовой маньяк
13
Использование ]вместо xпервого менее вероятно, чтобы существовать.
Очки
@numbermaniac Также были найдены такие команды для установки на Ubuntu 19.04: e, q, r. Но wэто вещь (близко who) и успешно завершить , так что вы получите $ 00 за это!
вал
67

Java 8, 131 199,00 долл. США (15 байт)

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

Попробуйте онлайн.

Объяснение:

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

Я использовал программу для генерации печатного символа ASCII в диапазоне, [32, 126]который при делении 131199будет иметь наименьшее количество десятичных значений. Так как 101могу делить 131199равномерно, в результате 1299я только на 31 цент меньше моей максимально возможной зарплаты, основанной на моем числе байтов 15.

Кевин Круйссен
источник
12
Черт, впечатляюще эффективный счет!
ETHproductions
41

CJam , (5 байт) $ 294204,018 ...

'$PB#

Попробуйте онлайн!

Объяснение:

Я получил это из ответа Денниса, но искал комбинации чисел, которые дали бы более высокий результат. Я почти сдался, но я увидел, что Pэто переменная для , а это . Буква имеет значение 11 в CJam, давая код выше.л 11294000ππ11294000B

maxb
источник
6
Так как ваш счет - ваша зарплата, вы должны указать это в шапке. Этот ответ в настоящее время выигрывает. :)
Денис
37

R , 20 байтов,$103540.9

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

Попробуйте онлайн!

Максимум для 20 байтов есть $105737.1, так что это довольно близко к пределу зарплаты!

Это было бы хорошим рейзом, и если мне заплатят за участие в гольф-коде ......

Giuseppe
источник
2
может быть способом объединения piс суммой набора данных ... потребуется программный подход для оценки различных комбинаций операторов / наборов данных / pi, чтобы максимально приблизиться к максимальному значению. Сейчас нет времени для этого, но это звучит как хороший вызов сам по себе.
JayCe
29

GS2 , (5 байт) $ 292,929

•$☺↔A

Полная программа (показана здесь с использованием кодовой страницы 437 ). (Максимально достижимая зарплата при 5 байтах составляет $ 299069,75)

Попробуйте онлайн!

Основывается на ответе GS2 Денниса ...

•$☺↔A                             []
•$    - push '$'                  ['$']
  ☺   - push unsigned byte:
   ↔  -   0x1d = 29               ['$',29]
    A - push top of stack twice   ['$',29,29,29]
      - implicit print            $292929
Джонатан Аллан
источник
1
Это 11 байтов, даже если это 5 символов.
dotancohen
3
@dotancohen: 0x0724011d41по моим подсчетам 5 байтов ...
eggyal
2
@eggyal: я немного пропустил кодовую страницу 437. Приятное прикосновение!
dotancohen
3
Уважаемый избиратель, могу ли я оставить отзыв, пожалуйста; Я не вижу, что является неправильным, бесполезным или неясным.
Джонатан Аллан
27

R , 21 байт $ 99649,9

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

Попробуйте онлайн!

Другой Rподход - см. Также ответ Джузеппе

Очень близко к максимуму 101937 долларов за этот счет.

Бонус: object.size()

R , 24 байта $ 89096

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

Попробуйте онлайн!

Вероятно, это зависит от системы, но когда я делаю это на TIO, я получаю $ 89096 - близко к пределу 92223 для 24 байтов.

Jayce
источник
аккуратный! Я думал о том, чтобы попытаться выбрать хороший набор данных, но я не могу понять, где искать их ... Я думаю, datasetsпакет имеет большой смысл.
Джузеппе
@Giuseppe Я просто пытаюсь prodи sumслучайно ... но прод увеличивается слишком быстро!
JayCe
sum(volcano)есть , 690907но это должно было бы быть около 1 байт на работу, ха - ха
Giuseppe
Отличная идея с использованием наборов данных!
digEmAll
@Giuseppe хороший улов, я полностью пропустил это! Дух.
JayCe
26

JavaScript (ES6), 19 байт, $ 109 839

_=>atob`JDEwOTgzOQ`

Попробуйте онлайн!

109839109884


Без atob()(Node.js), 26 байт, $ 86 126

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

Попробуйте онлайн!

Объединение «$» с кодами ASCII «V» (86) и «~» (126).

Arnauld
источник
Ничего себе Buffer. Впервые признаю этот класс; ')
Шиеру Асакото
1
@ user71546 Это можно сделать за 24 байта за 91 126 долларов, если разрешить тысячу разделителей. Но, видимо, они не ... :(
Арно
Bufferконструктор устарел, так что в будущих версиях он станет длиннее
mcfedr
@mcfedr Мы не заботимся о коде гольф, если рабочая версия интерпретатора правильно указана.
Riking
24

Самомодифицирующийся Brainfuck , 16 байтов, $ 124444

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

Попробуйте онлайн!

user202729
источник
1
Вы не в конечном итоге использовать :, поэтому вы можете удалить его и добавить еще +за $ 124444.
Нитродон
@ Нитродон Ах, хорошо, спасибо.
user202729
После печати 1почему бы не считать 3и затем распечатать только 3s? Вы бы сохранили байт и напечатали большее число.
12431234123412341234123
@ 12431234123412341234123 Вам нужно сохранить два байта. В противном случае с 15 байтами вы можете получить только до 131199 долларов, а 133333 - слишком много.
HVD
21

PHP, $ 131116 (8 байт)

Не видел один для php и хотел бросить один. Я знаю, что где-то в php есть плохой тип, который сократит это пополам, но я не могу найти это прямо сейчас.

$<?=ERA;

Это просто использует преимущества коротких тегов PHP и встроенных констант PHP.

Попробуйте онлайн!

mschuett
источник
1
Ха, я переключу это для чего-то другого завтра
mschuett
4
Вместо этого <?="$".просто сделайте $<?=и сохраните несколько байтов.
Исмаэль Мигель
2
@IsmaelMiguel хорошо, спасибо! Получил до 8 байт, но это не заняло достаточно много времени, чтобы выяснить, как получить остальные ~ 70k моей зарплаты.
mschuett
1
вау, не знал об этой константе, но я не смог найти в документации, кто-нибудь может помочь в этом?
Рафи
3
@Rafee это фактически не зарегистрировано ни одно место, которое я могу найти. Это языковая константа, которая была добавлена ​​17 лет назад github.com/php/php-src/commit/… . Я нашел это, сбросив все доступные константы, а затем просто начал поиск самых коротких из них. Похоже, что она предоставлена ​​ОС, которую можно увидеть здесь gnu.org/software/libc/manual/pdf/libc.pdf на стр. 195.
mschuett
17

Excel 19 байтов $ 107899,616068361

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

Объяснение:

     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
источник
2
Добро пожаловать в PPCG!
Луис Фелипе Де Иисус Муньос
6
+1 Еще лучше, они будут впечатлены вашими навыками Excel и захотят, чтобы вы были менеджером по работе с клиентами.
theREALyumdub
2
@ THEREALyumdub это должно быть хорошо? Я не уверен, что взял бы эту зарплату, если бы это означало, что я должен ежедневно работать с Excel;)
Аарон,
Я бы поспорил с форматированием учета в Excel, что вы можете полностью пропустить $ и просто установить форматирование для учета.
Selkie
Формат @Selkie Accounting добавляет запятую, что запрещено. Вы можете использовать пользовательский формат $ #, хотя. Я не был бы уверен, если бы я считал это как 15 символов с = CODE ("*") ^ PI () для $ 125773 или 17 символов (добавляя 2 для букв формата) с = CODE (")") ^ PI () за 116603 $, или если это запрещено.
Кита
12

vim, $ 99999, $ 110000, $ 120000

i$=&pvh*&ur

Попробуйте онлайн!

Использует регистр выражений (обратите внимание, что существует символ <Cr>, который невидим в большинстве шрифтов, между $и =, всего 13 байтов ) для вставки значения 'pvh'параметра, умноженного на значение 'ur'параметра.

'previewheight' это опция, которая контролирует высоту окон предварительного просмотра, которая по умолчанию равна 12.

'undoreload' это максимальное количество строк, которое может иметь буфер, прежде чем vim откажется от сохранения его в памяти для отмены, и по умолчанию он равен 10000.

Дверная ручка
источник
12

Желе ,  $ 256000, $ 256256  (6 байт ), $ 257256

⁹‘”$;;

Полная программа. (Максимально достижимая зарплата при 6 байтах составляет $ 260847,43)

Попробуйте онлайн!

Как?

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

Предыдущая ...

5 байт $ 256256

”$;⁹⁺

('$' объединяет 256, повтор 256 - вызывает временную неявную печать)

6 байтов $ 256000:

⁹×ȷṭ”$

(256 × 1000 ṭack '$')

Джонатан Аллан
источник
1
Это выглядит как 5 символов , но 11 байтов .
dotancohen
9
@dotancohen Jelly использует пользовательскую кодовую страницу .
Кармейстер
@Carmeister: Nice!
dotancohen
$ 256512
NieDzejkob
@NieDzejkob действительно 6 байтов доступны - у меня сейчас 257256 долларов :)
Джонатан Аллан
11

C #

Полная программа, 72 байта, $ 40448, 66 байтов, $ 43008

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

Попробуйте онлайн!

объяснение

Оператор сдвига влево обрабатывает символы 'T'и 'i'как целые числа 84 и 105 соответственно и выполняет сдвиг

Лямбда, 19 байт, 109568 $, 17 байт, 118784 $

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

Попробуйте онлайн!

Редактировать Спасибо @ LegionMammal978 и @Kevin за сохранение 2 байта

pmysl
источник
5
Просто любопытно, почему вы ставите точку с запятой в конце своей лямбды?
LegionMammal978
1
В дополнение к тому , что @ LegionMammal978 упоминается (задней точкой с запятой не должны учитываться в байт-счетчик для Java / C # лямбды), принимая неиспользуемый пустой параметр вы можете Гольф ()=>в o=>течение еще -1 байт.
Кевин Круйссен
2
Действительно, и с @ Kevin's, и с моим советом, лямбда может быть выиграна o=>"$"+('t'<<'j')с $ 118784.
LegionMammal978
@Kevin Я не знал об этом, спасибо за информацию.
pmysl
@ LegionMammal978 Спасибо за указание на ненужную точку с запятой и за предоставление обновленной лямбды. Должно быть, я как-то пропустил эту точку с запятой
pmysl
9

PHP, 13 байт, зарплата $ 144000

К сожалению, для этой работы требуется переезд на Маврикий (ну, я мог бы двигаться немного меньше на восток, однако каждый часовой пояс давал бы снижение зарплаты на 36 тыс. Долл.) Чтобы компенсировать неудобства, моя зарплата увеличивается на 1 долл. Каждый високосный год.

$<?=date(ZL);

Это просто выделяет Zчасовой пояс в секундах и добавляет, является ли это високосным годом.

aslum
источник
9

брейнфук , 43 байта, $ 58888

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

Попробуйте онлайн!

Как это устроено

++++++[>++++++<-]>.  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
источник
1
Добро пожаловать в PPCG! Надеюсь, что вы остаетесь
Джо Кинг
8

Python 3 , (22 байта)

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

Попробуйте онлайн!

Как и в случае с ответом Дурнкоба на Ruby , 4-байтовый символ Unicode, используемый здесь 𘂊, имеет порядковое значение максимальной целочисленной зарплаты, достижимой в 22 байта.

Обратите внимание, что print()по умолчанию печатаются его безымянные аргументы, разделенные пробелами ( sepэто необязательный именованный аргумент).

Джонатан Аллан
источник
Вы можете сделать это немного лучше, используя f строк: print (f "$ {ord ('𘫿')}") составляет 21 байт и выдает $ 101119
Matt
2
@Matt, который составляет 24 байта (я думал о f-строке, но понял, что дополнительные скобки будут стоить 2 байта)
Джонатан Аллан
Доказательство того, что Python 2 будет получать более высокую зарплату.
mbomb007
8

Gol> <> , $ 207680 в 8 байтах

'o**n; $

Попробуйте онлайн!

Как это устроено:

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

Интересно, что вы можете использовать hвместо этого n;, что дает 'o**h5$счет $ 231504, но вы не можете использовать 0-9, и нет другого 1-байтового способа выдвинуть 53, значение ASCII5

xornob
источник
1
Добро пожаловать в PPCG!
Mego
6

Mathematica, 18 байт, $ 107 163,49

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

Полная программа; запустить с помощью MathematicaScipt -script. Выходы $107163.4882807548сопровождаются завершающим переводом строки. Я проверил , что это самое высокую тонировку решение вида где состоит из , , , и .$~Print~N[expr]exprPiEI+-* /()!

LegionMammal978
источник
Как насчет I?
user202729
@ user202729 Нет, не помогает; любое число, которое на самом деле использует, Iа не просто I Iили I/Iобычно будет + 0.*Iпривязано к его N.
LegionMammal978
Очень хорошо! Я добрался до "$"~Print~Exp[E!N@E](который такой же длины, как и "$"~Print~N[E^(E!E)]), но с кавычками вокруг $, результат был чуть выше предела.
Миша Лавров
Я придумал Print [$, N [Pi ^ (Pi * Pi)]], получив $ 80662,7. Я пробовал разные комбинации Pi, E, +, *, ^ (думал о себе, но не нашел эффективного способа его использования), но мне никогда не приходило в голову попробовать!
Мени Розенфельд
$~Print~⌈E^(E!E)⌉с символами левого и правого потолка с одним символом это будет немного больше и 17 байтов
jaeyong спет
6

JavaScript (Node.js) , 23 байта, $ 65535

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

Попробуйте онлайн!

Это лучшее, без чего я могу обойтись atob, хотя есть большое улучшение пространства

Знаете, отсутствие короткого символа в функции преобразования ascii отстой МНОГО.

ПОСЛЕ ВСЕГО ДНЯ

JavaScript (Node.js) , 30 байт, $ 78011

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

Попробуйте онлайн!

или: 29 байт, $ 80020

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

Где 򀀠находитсяU+13894 INVALID CHARACTER

Ох String.codePointAt! Я просто полностью забыл это!

Одна шутка (15B, $ 130000), совсем не хвалебная, а просто для удовольствия

_=>"$十三萬"
Сиеру Асакото
источник
Итак, почему бы не _=>"$⑮萬"^ _ ^
Tsh
2
Я смеюсь прямо сейчас, потому что я понимаю китайский язык ...
ericw31415
Как насчет x1683F?
Густ ван де Валь
Простое использование _=>"$"+parseInt('1V0I',36)также выше, чем у вас до сих пор, так что вы можете добавить это тоже. Жаль, что вы не можете преобразовать основание 64 в десятичное в JavaScript ...
Гаст ван де Уол
@GustVanDeWal, к сожалению, вы не можете использовать цифры в коде.
Шиеру Асакото
6

MATLAB, 17 байтов, $ 112222

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

Старый ответ:

['$','RRUUTR'-'!']
Макс Радин
источник
1
хорошая возможность использовать автоматическое преобразование кода ASCII благодаря+pi
Hoki
e не является встроенной константой в matlab
Majestas 32
6

Рубин, $ 119443

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

Попробуйте онлайн!

Максимальный целочисленный вывод для 17 байтов. Символ Unicode - это U + 1D293, то есть 119443 в шестнадцатеричном формате.

Дверная ручка
источник
Если вы хотите рискнуть, попробуйте 10 байт $><<?$<<$$в долго работающей системе. Ответы до 177827 действительны.
18:00
Я думаю, что вы имеете в виду «в десятичном виде», или, по крайней мере, есть некоторая двусмысленность.
jpmc26
5

Japt, 5 байтов, $ 262144

'$+I³

Проверь это


Пояснение I- константа Джапта для 64, кубизирует ³это и затем '$+объединяет это с символом доллара.

мохнатый
источник
Рад, что проверил первым. Я собирался написать"${I³
Оливер
5

Befunge-98 (PyFunge) , 8 байт, $ 209728

$",**.q:

Попробуйте онлайн!

Символ :был рассчитан с использованием следующего метода:

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

Использование @и fтакже работает, но дает только 208896 $.

Винсент
источник
5

Befunge-93 , 9 байт, $ 192448

a>$",**.@

Попробуйте онлайн!

Выходы $192448, всего два доллара и девять центов меньше максимума. Это даже работает как полиглот с правильными реализациями Befunge-98 , где ему даже не нужно выбрасывать нераспознанную ошибку инструкции!

Объяснение:

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 байт)

*Ouo'ე'$/@

Попробуйте онлайн!

Интересная проблема, надеялся уменьшить это до 7 или 8 байтов, но это оказалось трудным. Выдвигает символы ე и $ в стек, выводит $, умножает вершину стека, выводит число и останавливает. Все еще надеемся найти опцию младшего байта

MickyT
источник