Da ich mich für einige Jobs bewerbe, deren Stellenanzeige nicht das Gehalt angibt, stellte ich mir einen besonders bösen Interviewer vor, der dem Kandidaten die Möglichkeit geben würde, sein eigenes Gehalt zu bestimmen ... indem er es "spielt"!
So geht es einfach so:
Schreiben Sie ohne Verwendung von Zahlen einen Code, der das Jahresgehalt ausgibt, das Ihnen angeboten werden soll.
Die Fähigkeit, prägnanten Code zu schreiben, ist jedoch ein Eckpfeiler dieses Unternehmens. Deshalb haben sie dort eine sehr enge Rangliste eingeführt
Arbeitgeber , die Code schreiben, ist b Bytes lang kann maximal ($ 1'000'000) · verdienen b -0,75 .
Wir betrachten (dies sind die ganzzahligen Teile, nur aus Gründen der Anzeige):
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
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die keine Eingaben vornimmt und einen Text ausgibt, der ein Dollarzeichen ( $
, U + 0024) und eine Dezimaldarstellung einer Zahl (ganzzahlig oder reell) enthält.
- Ihr Code darf keine Zeichen enthalten
0123456789
.
In der Ausgabe:
Optional kann zwischen dem Dollarzeichen und der Zahl ein einzelnes Leerzeichen stehen.
Nachgestellte und führende Leerzeichen und neue Zeilen sind zulässig, andere Ausgaben sind jedoch nicht zulässig.
Die Zahl muss als Dezimalzahl angegeben werden, wobei nur die Zeichen verwendet werden 0123456789.
. Dies schließt die Verwendung der wissenschaftlichen Notation aus.
Es sind beliebig viele Nachkommastellen zulässig.
Ein Eintrag ist gültig, wenn der von ihm ausgegebene Wert nicht größer als ($ 1'000'000) · b -0.75 ist , wobei b die Bytelänge des Quellcodes ist.
Beispielausgabe (die Anführungszeichen sollten nicht ausgegeben werden)
"$ 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
Die Punktzahl
Der von Ihnen ausgegebene Wert ist Ihre Punktzahl! (Das höchste Gehalt gewinnt natürlich.)
Bestenliste
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, $X (Y bytes)
Wo X
ist Ihr Gehalt und Y
ist die Größe Ihrer Einreichung. (Das Y bytes
kann überall in Ihrer Antwort sein.) Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>$111111.111... (18 bytes)</s> <s>$111999 (17 bytes)</s> $123456 (16 bytes)
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
# [><>](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>
Bearbeiten: (gerundet) Maximal zulässige Punktzahl pro Byte, zur schnelleren Bezugnahme - Text hier :
$80,662.67
statt$80662.6659
? Ihre Regeln scheinen das Komma auszuschließen, was bedeutet, dass ich keine integrierten Währungsfunktionen verwenden konnte.Antworten:
Bash, $ 127127
Probieren Sie es online!
Da der
x
Befehl nicht vorhanden ist, tritt ein Fehler auf und der Beendigungscode wird auf gesetzt127
.Dann gibt der Code ein Dollarzeichen aus, gefolgt von
$?
zweimal. Die$?
Variable speichert den Exit-Code des vorherigen Befehls, sodass dieser$127127
in 13 Bytes ausgegeben wird .quelle
x
das gibt. Als Bonus stürzte es ab, als ich versuchte, es zu öffnen, also bekam ich$11
stattdessen!]
stattx
, ersteres ist weniger wahrscheinlich.w
ist eine Sache (in der Nähewho
) und erfolgreich zu beenden, so dass Sie 00 $ dafür bekommen!Java 8, 131.199,00 USD (15 Byte)
Probieren Sie es online aus.
Erläuterung:
Ich habe ein Programm verwendet, um ein druckbares ASCII-Zeichen in dem Bereich zu generieren
[32, 126]
, der beim Teilen131199
die geringste Anzahl von Dezimalwerten aufweist. Da101
sich das131199
Ergebnis gleichmäßig teilen kann1299
, habe ich nur 31 Cent weniger als mein maximal mögliches Gehalt, basierend auf meiner Byteanzahl von 15.quelle
CJam , 5 Bytes, $ 262'144
Probieren Sie es online!
Wie es funktioniert
quelle
CJam , (5 Byte) $ 294204.018 ...
Probieren Sie es online!
Erläuterung:
Ich habe es aus Dennis 'Antwort abgeleitet, aber nach Zahlenkombinationen gesucht, die ein höheres Ergebnis liefern würden. Ich hätte fast aufgegeben, aber ich sah, dass diesπ π11≈ 294000
P
die Variable für ist und dass . Der Buchstabe hat in CJam den Wert 11 und gibt den obigen Code an.π 11 ≈ 294000B
quelle
R , 20 Bytes,
$103540.9
Probieren Sie es online!
Das Maximum für 20 Bytes liegt
$105737.1
also ziemlich nahe an der Gehaltsobergrenze!Dies wäre eine schöne Erhöhung, und wenn ich dafür bezahlt werde, Codegolf zu spielen ...
quelle
pi
mit der Summe eines Datensatzes zu kombinieren ... würde einen programmatischen Ansatz erfordern, um verschiedene Kombinationen von Operatoren / Datensätzen / pi zu bewerten, um so nah wie möglich an das Maximum heranzukommen. Keine Zeit dafür, aber es klingt nach einer schönen Herausforderung für sich.GS2 , (5 Bytes) 292.929 $
Ein vollständiges Programm (hier mit Code-Seite 437 gezeigt ). (Das maximal erreichbare Gehalt bei 5 Bytes beträgt 299069,75 USD.)
Probieren Sie es online!
Baut auf Dennis ' GS2-Antwort auf ...
quelle
0x0724011d41
ist 5 Bytes nach meiner Zählung ...R , 21 Bytes $ 99649.9
Probieren Sie es online!
Ein anderer
R
Ansatz - siehe auch die Antwort von GiuseppeGanz in der Nähe des Höchstbetrags von 101937 USD für dieses bytecount.
Bonus:
object.size()
R , 24 Bytes $ 89096
Probieren Sie es online!
Dies ist wahrscheinlich systemabhängig, aber wenn ich dies auf TIO ra, bekam ich 89096 $ - in der Nähe der Grenze von 92223 für 24 Bytes.
quelle
datasets
Paket macht sehr viel Sinn.prod
undsum
willkürlich ... aber der Vorschub steigt zu schnell!sum(volcano)
ist,690907
aber das müsste etwa 1 Byte sein, um zu arbeiten, hahaJavaScript (ES6), 19 Byte, 109.839 US-Dollar
Probieren Sie es online!
Ohne
atob()
(Node.js) 26 Byte, 86.126 US-DollarProbieren Sie es online!
Die Verkettung von '$' mit den ASCII-Codes 'V' (86) und '~' (126).
quelle
Buffer
. Zum ersten Mal diese Klasse anzuerkennen; ')Buffer
Der Konstruktor ist veraltet, sodass er in zukünftigen Versionen länger wirdSelbstmodifizierender Brainfuck , 16 Bytes, $ 124444
Probieren Sie es online!
quelle
:
, also können Sie es entfernen und ein weiteres+
für $ 124444 hinzufügen.1
, warum nicht zählen3
und dann nur3
s drucken ? Sie würden ein Byte speichern und eine höhere Zahl drucken.PHP, $ 131116 (8 Bytes)
Habe noch keine für PHP gesehen und wollte mir eine geben. Ich weiß, irgendwo in PHP ist ein schlechter Typ, der dies halbieren würde, aber ich kann es jetzt nicht finden.
Dies nutzt nur die kurzen PHP-Tags und die eingebauten PHP-Konstanten.
Probieren Sie es online!
quelle
<?="$".
einfach$<?=
ein paar Bytes speichern.GS2 , 5 Bytes, 291.000 US-Dollar
Dies ist eine CP437- Darstellung des binären Quellcodes.
Probieren Sie es online!
Wie es funktioniert
quelle
Excel 19 Bytes $ 107899.616068361
Erläuterung:
quelle
Vim,
$ 99999$ 110000$ 120000Probieren Sie es online!
Verwendet das Ausdrucksregister (beachten Sie, dass zwischen
$
und=
ein in den meisten Schriftarten unsichtbares <Cr> -Zeichen für insgesamt 13 Byte steht ), um den Wert der'pvh'
Option multipliziert mit dem Wert der'ur'
Option einzufügen .'previewheight'
Mit dieser Option wird die Höhe der Vorschaufenster gesteuert, die standardmäßig 12 beträgt.'undoreload'
Dies ist die maximale Anzahl von Zeilen, die ein Puffer haben kann, bevor vim aufgibt, ihn für das Rückgängigmachen im Speicher zu speichern. Der Standardwert ist 10.000.quelle
Jelly ,
$ 256000 $ 256256(6 Bytes ) $ 257256Ein volles Programm. (Das maximal erreichbare Gehalt bei 6 Bytes beträgt 260847,43 USD.)
Probieren Sie es online!
Wie?
Bisherige...
5 Bytes $ 256256
('$' verketten 256, 256 wiederholen - provisorisches implizites Drucken)
6 Bytes $ 256000:
(256 × 1000 ṭack '$')
quelle
C #
Volles Programm,
72 Bytes, $ 40448,66 Bytes, $ 43008Probieren Sie es online!
Erläuterung
Der Linksschiebeoperator behandelt Zeichen
'T'
und'i'
als ganze Zahlen 84 bzw. 105 und führt eine Verschiebung durchLambda,
19 Bytes, 109568 $17 Bytes, 118784 $Probieren Sie es online!
Bearbeiten Danke an @ LegionMammal978 und @Kevin für das Speichern von 2 Bytes
quelle
()=>
too=>
für ein zusätzliches -1-Byte golfen.o=>"$"+('t'<<'j')
$ golfen werden.PHP, 13 Bytes, $ 144000 Gehalt
Unglücklicherweise ist für diesen Job ein Umzug nach Mauritius erforderlich (naja, ich könnte etwas weniger weit nach Osten ziehen, aber jede Zeitzone weniger würde zu einem Lohnrückgang von 36.000 USD führen.) Um die Unannehmlichkeiten zu kompensieren, erhöht sich mein Gehalt jedes Schaltjahr um 1 USD.
Dadurch wird
Z
die Zeitzone nur in Sekunden angegeben und es wird angehängt, ob es sich um ein Schaltjahr handelt oder nicht.quelle
Brainfuck , 43 Bytes, $ 58888
Probieren Sie es online!
Wie es funktioniert
quelle
Python 3 (22 Bytes) 98.442 US-Dollar
Probieren Sie es online!
Ähnlich wie bei der Ruby-Antwort von Doorknob hat das hier verwendete 4-Byte-Unicode-Zeichen
𘂊
einen Ordnungswert des in 22 Byte erreichbaren maximalen Ganzzahlgehalts.Beachten Sie, dass
print()
die unbenannten Argumente standardmäßig durch Leerzeichen getrennt gedruckt werden (sep
optionales benanntes Argument).quelle
Gol> <> , $ 207680 in 8 Bytes
Probieren Sie es online!
Wie es funktioniert:
Interessanterweise können Sie
h
stattdessen verwendenn;
, was'o**h5$
mit einer Punktzahl von 231504 $ ergibt, aber Sie können nicht 0-9 verwenden, und es gibt keine andere 1-Byte-Methode, um 53, den ASCII-Wert von, zu übertragen5
quelle
Jelly , 8 Bytes, $ 210176.48625619375
3535 (
⁽½"
) multipliziert (×
) mit seinem sqrt (½
).Probieren Sie es online!
quelle
Mathematica, 18 Bytes, 107.163,49 USD
Volles Programm; laufen mit
MathematicaScipt -script
. Ausgaben$107163.4882807548
gefolgt von einer nachgestellten Newline. Ich habe festgestellt , dass dies die torreichsten Lösung der Form ist , wo die zusammengesetzt ist , , , und .$~Print~N[expr]
expr
Pi
E
I
+-* /()!
quelle
I
?I
und nicht nurI I
oderI/I
wird in der Regel eine+ 0.*I
geheftete auf seineN
."$"~Print~Exp[E!N@E]
(das ist die gleiche Länge wie"$"~Print~N[E^(E!E)]
), aber mit den Anführungszeichen$
war die Ausgabe gerade noch über dem Limit.$~Print~⌈E^(E!E)⌉
mit Zeichen an der linken und rechten Decke mit einem Zeichen wären es etwas mehr und 17 Bytes05AB1E (5 Byte), $ 262626
Probieren Sie es online!
$
["$", 26, 26, 26]
J
quelle
JavaScript (Node.js) , 23 Byte, 65535 US-Dollar
Probieren Sie es online!
Dies ist das Beste, was ich ohne bekommen kann
atob
, obwohl es einen großen Verbesserungsraum gibtSie wissen, dass es VIEL Leid ist, kein kurzes Zeichen für die ASCII-Konvertierungsfunktion zu haben.
Nach einem ganzen Tag
JavaScript (Node.js) , 30 Byte, 78011 USD
Probieren Sie es online!
oder: 29 Bytes, 80020 US-Dollar
Wo
istU+13894 INVALID CHARACTER
Oh
String.codePointAt
! Ich habe das einfach komplett vergessen!Ein Witz (15B, $ 130000), überhaupt nicht wert, sondern nur zum Spaß
quelle
_=>"$⑮萬"
^ _ ^x1683F
?_=>"$"+parseInt('1V0I',36)
ist auch höher als das, was Sie bisher haben, daher möchten Sie möglicherweise auch dieses hinzufügen. Schade, dass Sie die Basis 64 in JavaScript nicht in eine Dezimalzahl konvertieren können ...MATLAB, 17 Byte, 112222 US-Dollar
Alte Antwort:
quelle
+pi
Ruby, 119443 USD
Probieren Sie es online!
Die maximale Ganzzahlausgabe für 17 Byte. Das Unicode-Zeichen ist U + 1D293, also 119443 in hexadezimaler Schreibweise.
quelle
$><<?$<<$$
auf einem System mit langer Laufzeit. Antworten bis 177827 sind gültig.dc , 169169 $ 10 Bytes
Probieren Sie es online!
Dies druckt 13 (
D
) im Quadrat zweimalquelle
Japt, 5 Bytes, $ 262144
Probier es aus
Erklärung
I
ist die Japt-Konstante für64
, würfelt³
sie und'$+
verkettet sie dann mit dem Dollarsymbol .quelle
"${I³
Befunge-98 (PyFunge) , 8 Bytes, $ 209728
Probieren Sie es online!
Das Zeichen
:
wurde mit der folgenden Methode berechnet:Verwenden
@
undf
funktioniert auch, gibt aber nur 208896 $.quelle
Befunge-93 , 9 Bytes, $ 192448
Probieren Sie es online!
Outputs
$192448
, nur zwei Dollar und neun Cent unter dem Maximum. Dies funktioniert sogar als Polyglott mit den richtigen Implementierungen von Befunge-98 , wo es nicht einmal einen nicht erkannten Anweisungsfehler auslösen muss!Erläuterung:
quelle
Cubix , $ 155088 (12 Byte)
Probieren Sie es online!
Es war ein interessantes Problem, zu hoffen, dass dies auf 7 oder 8 Bytes reduziert wird, aber es erwies sich als schwierig. Drückt die Zeichen ე und $ auf den Stapel, gibt das
$
Mehrfache des Stapels aus, gibt die Zahl aus und hält an. Ich hoffe immer noch, eine niedrigere Byte-Option zu findenquelle