Kiedy staram się o pracę, której ogłoszenie nie podaje wynagrodzenia, wyobrażałem sobie wyjątkowo złego ankietera, który dałby kandydatowi możliwość wyboru własnej pensji ... poprzez „grę w golfa”!
Tak to wygląda po prostu:
Bez używania liczb napisz kod, który podaje roczną pensję, którą chcesz zaoferować.
Jednak umiejętność pisania zwięzłego kodu jest kamieniem węgielnym tej firmy. Wdrożyli więc bardzo wąską drabinę stażu pracy
pracodawcy, którzy piszą kod o długości b bajtów, mogą zarobić maksymalnie (1 000 000 $) · b -0,75 .
patrzymy na (są to liczby całkowite, tylko z powodów wyświetlania):
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
Wyzwanie
Napisz program lub funkcję, która nie pobiera danych wejściowych i wyświetla tekst zawierający znak dolara ( $
, U + 0024) i dziesiętną reprezentację liczby (liczba całkowita lub rzeczywista).
- Twój kod nie może zawierać znaków
0123456789
.
W danych wyjściowych:
Opcjonalnie może być pojedyncza spacja między znakiem dolara a liczbą.
Dopuszczalne są końcowe i białe spacje oraz nowe linie, ale wszelkie inne dane wyjściowe są zabronione.
Liczba musi być wyrażona jako liczba dziesiętna przy użyciu samych znaków 0123456789.
. Wyklucza to stosowanie notacji naukowej.
Dozwolona jest dowolna liczba miejsc dziesiętnych.
Wpis jest poprawny, jeśli wartość, którą wyprowadza, nie jest większa niż (1 000 $) · b -0,75 , gdzie b jest długością bajtu kodu źródłowego.
Przykładowe dane wyjściowe (cytaty nie powinny być drukowane)
"$ 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
Wynik
Wartość, którą wyprowadzasz, to Twój wynik! (Oczywiście wygrywa najwyższa pensja.)
Tabela liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, $X (Y bytes)
gdzie X
jest twoja pensja i Y
wielkość twojego poddania się. (The Y bytes
może być w dowolnym miejscu w odpowiedzi). Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>$111111.111... (18 bytes)</s> <s>$111999 (17 bytes)</s> $123456 (16 bytes)
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), $126,126 (13 bytes)
var QUESTION_ID=171168,OVERRIDE_USER=77736;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body.replace(/<(s|strike)>.*?<\/\1>/g,"");s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a1=r.match(SCORE_REG),a2=r.match(LANG_REG),a3=r.match(BYTES_REG);a1&&a2&&e.push({user:getAuthorName(s),size:a3?+a3[1]:0,score:+a1[1].replace(/[^\d.]/g,""),lang:a2[1],rawlang:(/<a/.test(a2[1])?jQuery(a2[1]).text():a2[1]).toLowerCase(),link:s.share_link})}),e.sort(function(e,s){var r=e.score,a=s.score;return a-r});var s={},r=1,a=null,n=1;e.forEach(function(e){e.score!=a&&(n=r),a=e.score,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.lang).replace("{{SCORE}}","$"+e.score.toFixed(2)).replace("{{SIZE}}",e.size||"?").replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);s[e.rawlang]=s[e.rawlang]||e});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){var r=e.rawlang,a=s.rawlang;return r>a?1:r<a?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SCORE}}","$"+o.score.toFixed(2)).replace("{{SIZE}}",o.size||"?").replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var LANG_REG=/<h\d>\s*((?:[^\n,](?!\s*\(?\d+\s*bytes))*[^\s,:-])/,BYTES_REG=/(\d+)\s*(?:<a[^>]+>|<\/a>)?\s*bytes/i,SCORE_REG=/\$\s*([\d',]+\.?\d*)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:520px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Score</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td><td>Size</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SCORE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SCORE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Edycja: (zaokrąglony) maksymalny dozwolony wynik na liczbę bajtów, dla szybszego odwołania - tekst tutaj :
$80,662.67
zamiast$80662.6659
? Twoje reguły wydają się wykluczać przecinek, co oznacza, że nie mogłem używać żadnych wbudowanych funkcji walutowych.Odpowiedzi:
bash, 127127 USD
Wypróbuj online!
Ponieważ
x
polecenie nie istnieje, powoduje błąd i ustawia kod wyjścia na127
.Następnie kod generuje znak dolara, a następnie
$?
dwa razy. Te$?
zmienne przechowuje kod wyjścia z poprzedniego polecenia, więc wyjścia$127127
w 13 bajtów .źródło
x
nie istnieje. Jako bonus rozbił się podczas próby otwarcia, więc dostałem$11
!]
zamiastx
tego pierwszego jest mniej prawdopodobne.w
jest rzeczą (bliskowho
) i zakończeniem pomyślnie, więc dostajesz za to 00 $!Java 8, 131 1999,00 (15 bajtów)
Wypróbuj online.
Wyjaśnienie:
Użyłem programu do wygenerowania drukowalnego znaku ASCII w zakresie,
[32, 126]
który przy dzieleniu131199
miałby najmniejszą liczbę wartości dziesiętnych. Ponieważ101
można podzielić131199
równo, w wyniku czego1299
brakuje mi tylko 31 centów mojej maksymalnej możliwej pensji na podstawie mojej liczby bajtów wynoszącej 15.źródło
CJam , 5 bajtów, 262'144 $
Wypróbuj online!
Jak to działa
źródło
CJam , (5 bajtów) 294204,018 $ ...
Wypróbuj online!
Wyjaśnienie:
Wyprowadziłem to z odpowiedzi Dennisa, ale szukałem kombinacji liczb, które mogłyby dać wyższy wynik. Prawie się poddałem, ale widziałem, żeπ π11≈ 294000
P
jest to zmienna dla i że . List ma wartość 11 w CJam, podając powyższy kod.π 11 ≈ 294000B
źródło
R , 20 bajtów,
$103540.9
Wypróbuj online!
Maksymalna liczba bajtów wynosi 20
$105737.1
, więc jest to dość zbliżone do limitu pensji!To byłaby dobra podwyżka, a jeśli dostanę zapłatę za grę w golfa ......
źródło
pi
z sumą zestawu danych ... wymagałoby programowego podejścia do oceny różnych kombinacji operatorów / zestawów danych / pi, aby zbliżyć się do maksimum, jak to możliwe. Teraz nie ma na to czasu, ale samo w sobie brzmi jak niezłe wyzwanie.GS2 , (5 bajtów) 299 929 USD
Pełny program (pokazany tutaj przy użyciu strony kodowej 437 ). (Maksymalna osiągalna pensja @ 5 bajtów wynosi 299069.75 $)
Wypróbuj online!
Bazuje na odpowiedzi GS2 Dennisa ...
źródło
0x0724011d41
według mojego obliczenia jest 5 bajtów ...R , 21 bajtów 996,99,9 USD
Wypróbuj online!
Inne
R
podejście - patrz także odpowiedź GiuseppeBardzo blisko maksymalnie 101937 USD dla tego bajtu.
Premia:
object.size()
R , 24 bajty 89096 USD
Wypróbuj online!
Prawdopodobnie jest to zależne od systemu, ale kiedy to zrobiłem na TIO, dostałem 89096 $ - blisko limitu 92223 za 24 bajty.
źródło
datasets
pakiet ma wiele sensu.prod
isum
losowo ... ale prod rośnie zbyt szybko!sum(volcano)
jest,690907
ale do pracy musiałby być około 1 bajt, hahaJavaScript (ES6), 19 bajtów, 109 839 USD
Wypróbuj online!
Bez
atob()
(Node.js), 26 bajtów, 86 126 $Wypróbuj online!
Łączenie „$” z kodami ASCII „V” (86) i „~” (126).
źródło
Buffer
. Po raz pierwszyBuffer
Konstruktor jest przestarzały, więc w przyszłych wersjachSamomodyfikujący Brainfuck , 16 bajtów, 124444 USD
Wypróbuj online!
źródło
:
go, więc możesz go usunąć i dodać kolejny+
za 124444 USD.1
, dlaczego nie policzyć,3
a następnie wydrukować tylko3
s? Zapisałbyś bajt i wydrukowałeś wyższy numer.PHP, 131116 $ (8 bajtów)
Nie widziałem jednego dla php i chciałem go wyrzucić. Wiem, że gdzieś w php jest zły typecast, który przeciąłby to na pół, ale nie mogę go teraz znaleźć.
To po prostu wykorzystuje krótkie tagi PHP i wbudowane stałe PHP.
Wypróbuj online!
źródło
<?="$".
prostu zrób$<?=
i zapisz kilka bajtów.GS2 , 5 bajtów, 291 000 $
Jest to reprezentacja CP437 binarnego kodu źródłowego.
Wypróbuj online!
Jak to działa
źródło
Excel 19 bajtów 107899.616068361
Wyjaśnienie:
źródło
vim,
99999USD 110000USD 120000 USDWypróbuj online!
Używa rejestru wyrażeń (zwróć uwagę, że pomiędzy czcionkami
$
i=
, i dla 13 bajtów występuje znak <Cr>, który jest niewidoczny w większości czcionek ), aby wstawić wartość'pvh'
opcji pomnożoną przez wartość'ur'
opcji.'previewheight'
to opcja kontrolująca wysokość okien podglądu, która domyślnie wynosi 12.'undoreload'
to maksymalna liczba linii, jaką może mieć bufor, zanim vim zrezygnuje z przechowywania go w pamięci do cofnięcia, i domyślnie wynosi 10 000.źródło
Galaretka ,
256000 $ 256256(6 bajtów ) 257256 $Pełny program. (Maksymalne osiągalne wynagrodzenie przy 6 bajtach wynosi 260847,43 USD)
Wypróbuj online!
W jaki sposób?
Poprzedni...
5 bajtów 256256 $
(„$” konkatenuje 256, powtórz 256 - powodując tymczasowy druk niejawny)
6 bajtów 256000 $:
(256 × 1000 ṭack „$”)
źródło
DO#
Pełny program,
72 bajty, 40448 $66 bajtów, 43008 $Wypróbuj online!
Wyjaśnienie
Lewy operator zmiany traktuje znaki
'T'
i odpowiednio'i'
liczby całkowite 84 i 105 i wykonuje zmianęLambda,
19 bajtów, 109568 $17 bajtów, 118784 $Wypróbuj online!
Edytuj Dzięki @ LegionMammal978 i @Kevin za zapisanie 2 bajtów
źródło
()=>
abyo=>
za dodatkową -1 bajt.o=>"$"+('t'<<'j')
za 118784 $.PHP, 13 bajtów, 144000 $ wynagrodzenia
Niestety w przypadku tej pracy wymagana jest przeprowadzka na Mauritius (no cóż, mógłbym przesunąć się nieco mniej daleko na wschód, jednak każda strefa czasowa przyniosłaby spadek wynagrodzenia o 36 tys. USD). Aby zrekompensować tę niedogodność, moja pensja wzrasta o 1 USD co roku.
To po prostu
Z
określa strefę czasową w sekundach i dołącza, czy jest to rok przestępny, czy nie.źródło
pieprzenie mózgu , 43 bajty, 58888 $
Wypróbuj online!
Jak to działa
źródło
Python 3 (22 bajty) 98.442 $
Wypróbuj online!
Podobnie jak w przypadku Rubinowej odpowiedzi Doorknoba, użyty tutaj 4-bajtowy znak Unicode
𘂊
ma wartość porządkową maksymalnej liczby całkowitej, którą można uzyskać w 22 bajtach.Zauważ, że
print()
domyślnie wypisuje swoje nienazwane argumenty oddzielone spacjami (sep
jest to opcjonalny nazwany argument).źródło
Gol> <> , 207680 $ w 8 bajtach
Wypróbuj online!
Jak to działa:
Co ciekawe, możesz użyć
h
zamiast tegon;
, co daje'o**h5$
wynik 231504 $, ale nie możesz użyć 0-9, a nie ma innego 1-bajtowego sposobu na przesunięcie 53, wartość ASCII5
źródło
Galaretka , 8 bajtów, 210176,48625619375
3535 (
⁽½"
) multipli (×
) ed przez jego sqrt (½
).Wypróbuj online!
źródło
Mathematica, 18 bajtów, 107 163,49 USD
Pełny program; uruchomić za pomocą
MathematicaScipt -script
. Wyjścia,$107163.4882807548
po których następuje końcowy znak nowej linii. I sprawdzeniu, że jest to rozwiązanie najwyższy wynik w formie , gdzie składa się z , , i .$~Print~N[expr]
expr
Pi
E
I
+-* /()!
źródło
I
?I
, a nie tylkoI I
czyI/I
będzie na ogół mają+ 0.*I
przyczepione na jejN
."$"~Print~Exp[E!N@E]
(co jest tej samej długości co"$"~Print~N[E^(E!E)]
), ale przy cudzysłowach$
wynik był niewiele ponad limit.$~Print~⌈E^(E!E)⌉
z lewymi i prawymi znakami na suficie z jednym znakiem byłoby to trochę więcej i 17 bajtów05AB1E (5 bajtów), 262626 USD
Wypróbuj online!
$
["$", 26, 26, 26]
J
źródło
JavaScript (Node.js) , 23 bajty, 65535 USD
Wypróbuj online!
To jest najlepsze, bez czego mogę uzyskać
atob
, choć istnieje duża przestrzeń do poprawy tbhWiesz, brak krótkiego charakteru do funkcji konwersji ascii jest do Bani.
PO CAŁYM DNIU
JavaScript (Node.js) , 30 bajtów, 78011 USD
Wypróbuj online!
lub: 29 bajtów, 80020 $
Gdzie
jestU+13894 INVALID CHARACTER
Och
String.codePointAt
! Właśnie o tym zapomniałem!Żart (15 miliardów, 130000 $), wcale nie chwalony, ale dla zabawy
źródło
_=>"$⑮萬"
^ _ ^x1683F
?_=>"$"+parseInt('1V0I',36)
jest również wyższe niż do tej pory, więc możesz również dodać to. Szkoda, że nie można przekonwertować bazy 64 na dziesiętne w JavaScript ...MATLAB, 17 bajtów, 112222 USD
Stara odpowiedź:
źródło
+pi
Ruby, 119443 USD
Wypróbuj online!
Maksymalna liczba całkowita wyjściowa dla 17 bajtów. Znak Unicode to U + 1D293, czyli 119443 w systemie szesnastkowym.
źródło
$><<?$<<$$
w długotrwałym systemie. Odpowiedzi do 177827 są poprawne.dc , 169169 $ 10 bajtów
Wypróbuj online!
Drukuje 13 (
D
) kwadrat, dwa razyźródło
Japt, 5 bajtów, 262144 USD
Sprawdź to
Wyjaśnienie
I
jest stałą Japt dla64
, dzieli ją na³
kostki, a następnie'$+
łączy to z symbolem dolara.źródło
"${I³
Befunge-98 (PyFunge) , 8 bajtów, 209728 USD
Wypróbuj online!
Znak
:
został obliczony przy użyciu następującej metody:Korzystanie
@
if
działa, ale daje tylko 208896 USD.źródło
Befunge-93 , 9 bajtów, 192448 $
Wypróbuj online!
Wyjścia
$192448
, zaledwie dwa dolary i dziewięć centów poniżej maksymalnego. Działa to nawet jako poliglot z odpowiednimi implementacjami Befunge-98 , gdzie nawet nie musi wyrzucać nierozpoznanego błędu instrukcji!Wyjaśnienie:
źródło
Cubix , 155088 USD (12 bajtów)
Wypróbuj online!
Ciekawym problemem było sprowadzenie tego do 7 lub 8 bajtów, ale okazało się to trudne. Pcha znaki ე i $ do stosu, wypisuje
$
, zwielokrotnia górę stosu, wypisuje liczbę i zatrzymuje. Nadal mam nadzieję znaleźć opcję niższego bajtuźródło