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


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


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

37

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

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

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

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

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


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 байтов.


аккуратный! Я думал о том, чтобы попытаться выбрать хороший набор данных, но я не могу понять, где искать их ... Я думаю, 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).


Ничего себе Buffer. Впервые признаю этот класс; ')
Шиеру Асакото

1
@ user71546 Это можно сделать за 24 байта за 91 126 долларов, если разрешить тысячу разделителей. Но, видимо, они не ... :(
Арно

Bufferконструктор устарел, так что в будущих версиях он станет длиннее
mcfedr

@mcfedr Мы не заботимся о коде гольф, если рабочая версия интерпретатора правильно указана.
Riking

24

1
Вы не в конечном итоге использовать :, поэтому вы можете удалить его и добавить еще +за $ 124444.
Нитродон

@ Нитродон Ах, хорошо, спасибо.
user202729

После печати 1почему бы не считать 3и затем распечатать только 3s? Вы бы сохранили байт и напечатали большее число.
12431234123412341234123

@ 12431234123412341234123 Вам нужно сохранить два байта. В противном случае с 15 байтами вы можете получить только до 131199 долларов, а 133333 - слишком много.
HVD

21

PHP, $ 131116 (8 байт)

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

$<?=ERA;

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

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


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

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


@Carmeister: Nice!
dotancohen


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


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часовой пояс в секундах и добавляет, является ли это високосным годом.


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)

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


1
Добро пожаловать в PPCG!
Mego


6

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

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

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


Как насчет 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-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 байтов, но это оказалось трудным. Выдвигает символы ე и $ в стек, выводит $, умножает вершину стека, выводит число и останавливает. Все еще надеемся найти опцию младшего байта

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.