Das Interview: Die Front Nine
Dies ist die erste einer Reihe von Herausforderungen, die durch die Programmierung von Fragen zu Vorstellungsgesprächen inspiriert wurden.
Sie gehen in das Büro, in dem Ihr potenzieller zukünftiger Chef sitzt. "Komm rein und setz dich", sagt er. Sie setzen sich nervös hin und stellen sicher, dass Ihre bissige, aber professionelle Kleidung keine Falten aufweist. Er stellt Ihnen viele Fragen zu Ihrer Ausbildung, früheren Arbeitserfahrungen und so weiter. Du antwortest ihnen meistens ehrlich und fügst hier und da eine kleine Verschönerung hinzu, damit du besser klingst. Er beugt sich vor und beginnt wieder zu sprechen.
"Haben Sie jemals von Code-Golf gehört?" Warum, ja, du liebst Golf Code und machst es oft in deiner Freizeit. "Großartig. Der letzte Teil des Interviews ist eine technische Prüfung. Sie werden mit dem Schreiben von Code beauftragt, um eine Reihe von Problemen zu lösen ..." Er gibt Ihnen ein Blatt Papier. Du siehst schnell darüber hinweg. Kinderleicht. Warum fragte er nach Code Golfing?
"Sie werden basierend auf der Gesamtgröße Ihrer Lösungen für diese Probleme bewertet. Wenn Sie weniger Punkte erzielen als alle anderen Kandidaten, liegt der Job bei Ihnen." Oh. "Wie beim Golf gibt es 18 Probleme, die in zwei 9er-Sätze unterteilt sind. Sie können jede Sprache verwenden, die Sie für die Lösung verwenden möchten. Wir haben Compiler und Dolmetscher für jede Sprache, von der Sie gehört haben, und mit Sicherheit einige, die Sie haben nicht. Viel Glück! "
Die Aufgaben
Aufgabe 1: Multiplikationstabelle
Wenn Sie eine Zahl n
als Eingabe angeben, geben Sie eine Multiplikationstabelle für positive ganze Zahlen im Bereich aus [1, n]
. n
wird im Bereich sein [1, 12]
. Alle Zahlen sollten in der Tabelle linksbündig sein. Verwenden Sie das Zeichen x
für die linke obere Ecke.
Beispiele:
n=4
x 1 2 3 4
1 1 2 3 4
2 2 4 6 8
3 3 6 9 12
4 4 8 12 16
n=10
x 1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
Schritt 2: Ordnungszahl RMS
Ausgeben des quadratischen Mittelwerts der ASCII-Ordnungszahlen bei einer gegebenen Folge von ASCII-Zeichen . Die Zeichenfolge enthält niemals ein NULL-Byte (Ordnungszahl 0).
Beispiele:
Input: The Interview: The Front Nine
Output: 95.08290393488019
Input: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Output: 91.38101204135423
Schritt 3: Projektilbewegung
Geben Sie unter Berücksichtigung der Anfangsgeschwindigkeit und des Winkels mit dem Horizont eines vom Boden abgefeuerten Projektils die horizontale Distanz aus, die es vor der Landung zurücklegen wird. Die Anfangsgeschwindigkeit wird in Metern pro Sekunde angegeben, der Winkel in Grad und die Entfernung in Metern. Nehmen Sie die Schwerkraft der Erde an ( g=9.81 m/s/s
) und ignorieren Sie relativistische Effekte. Um dieses Problem zu lösen, können Sie davon ausgehen, dass die Erde flach ist (Sie müssen die Erdkrümmung bei Ihren Berechnungen nicht berücksichtigen). Der angegebene Winkel liegt im Bereich [0, 90]
. Ihre Antwort sollte auf mindestens zwei Dezimalstellen genau sein (Rundung ist zulässig).
Beispiele:
velocity=50, angle=45
Result: 254.84 (rounded)
velocity=10, angle=60
Result: 8.82798576742547
Schritt 4: Etaoin Shrdlu
Bei einer Zeichenfolge mit druckbaren ASCII-Zeichen (Ordnungszahlen im Bereich [32,127]
), die nicht null ist , geben Sie die Zeichenfolge aus, wobei die Zeichen nach Häufigkeit in absteigender Reihenfolge sortiert sind. Bei Stimmengleichheit aufsteigend nach ASCII-Ordnungszahl ordnen.
Beispiele:
Input: "Hello, World!"
Output: "llloo !,HWder"
Input: "Programming Puzzles and Code Golf"
Output: " oooPPaaddeeggllmmnnrrzzCGfisu"
Schritt 5: Fibonacci-Index
Bestimmen Sie anhand einer Zahl, ob es sich um eine Fibonacci-Zahl handelt, und geben Sie, falls dies der Fall ist, den Index (beginnend mit 1) in der Sequenz aus. Wenn es sich nicht um eine Fibonacci-Zahl handelt, geben Sie 0 aus. Bei 1, die zweimal in der Folge enthalten ist, geben Sie das früheste Vorkommen aus (Index 1).
Beispiele:
Input: 1
Output: 1
Input: 144
Output: 12
Input: 4
Output: 0
Schritt 6: Anagramme
Bei drei Zeichenfolgen mit englischen Kleinbuchstaben ( [a-z]
) wird eine Zeichenfolge ausgegeben, die alle Buchstaben der ersten Zeichenfolge verwendet, mit der zweiten Zeichenfolge beginnt und mit der dritten Zeichenfolge endet. Wenn eine solche Zeichenfolge nicht erstellt werden kann, geben Sie eine leere Zeichenfolge aus. Die Eingabezeichenfolgen bestehen immer aus mindestens einem Buchstaben. Die "Mitte" der Ausgabezeichenfolge (zwischen Präfix- und Postfix-Zeichenfolge) kann leer sein, wenn für die Präfix- und Postfix-Zeichenfolge alle Buchstaben in der Quellzeichenfolge verwendet werden.
Beispiele:
Input: geobits bi es
Possible output: bigtoes
Input: mariatidaltug digital trauma
Output: digitaltrauma
Input: mego go lf
Output: (empty string)
Schritt 7: Ausfüllen der Lücken
Wenn Sie eine Liste von Zeichenfolgen und ein Füllzeichen angegeben haben, geben Sie das Ergebnis aus, indem Sie alle Zeichenfolgen bis zur Länge der längsten Zeichenfolge mit dem Füllzeichen auffüllen, wobei die ursprüngliche Reihenfolge in diesem Fall aufsteigend nach der ursprünglichen Länge der Zeichenfolgen sortiert bleibt einer Krawatte. Sie sollten in der Lage sein, Listen beliebiger endlicher Länge zu verarbeiten, die Zeichenfolgen beliebiger endlicher Länge enthalten und nur durch Speicherbeschränkungen begrenzt sind.
Beispiele:
Input: ["hello","world","this","is","a","test"], 'x'
Output: ["axxxx","isxxx","thisx","testx","hello","world"]
Input: ["I'm","a","lumberjack","and","I'm","okay"], '!'
Output: ["a!!!!!!!!!","I'm!!!!!!!","and!!!!!!!","I'm!!!!!!!","okay!!!!!!","lumberjack"]
Schritt 8: Änderung vornehmen
Geben Sie bei einer Zahl im Bereich [0.01,0.99]
die Anzahl jeder der 4 US-Standardmünzen aus, die zur Darstellung dieses Werts verwendet werden sollen, sodass die Gesamtzahl der Münzen minimiert wird. Die Eingabe hat immer genau 2 Nachkommastellen.
Münzwertreferenz:
Penny: 0.01, Nickel: 0.05, Dime: 0.10, Quarter: 0.25
Beispiele:
Input: 0.75
Output: [0,0,0,3]
Input: 0.23
Output: 3 pennies, 0 nickels, 2 dimes, 0 quarters
Schritt 9: Bereiche zusammenführen
Ausgehend von einer endlichen Liste von 2 Tupeln mit Ganzzahlen, die Bereiche darstellen, geben Sie das Ergebnis der Zusammenführung aller überlappenden oder benachbarten Bereiche aus. Alle Bereiche haben mindestens die Länge 1 und der Startwert liegt immer unter dem Endwert. Die Reihenfolge der Ausgabe spielt keine Rolle.
Beispiele:
Input: (2,3), (4,5), (6,9), (0,7)
Output: (0,9)
Input: (-3,4), (2,5), (-10,-4)
Output (-10,-4), (-3,5)
Input: (2,3), (5,6), (6,8)
Output: (5,8), (2,3)
Regeln
- Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes).
- Ihre Punktzahl ist die Summe der Byte-Zählungen für alle Ihre Lösungen.
- Standardlücken sind verboten.
- Die Ein- und Ausgabe kann auf jede Art und Weise erfolgen, die für Ihre Sprache als Standard gilt.
- Sie können vollständige Programme oder Funktionen für jede Herausforderung schreiben und zwischen den beiden Herausforderungen wechseln.
- Sie müssen für alle Herausforderungen dieselbe Sprache verwenden. Wenn Versionsunterschiede so bedeutend sind, dass sie in der Regel als separate Einträge in Herausforderungen betrachtet werden, müssen Sie durchgehend dieselbe Version verwenden. Wenn Sie beispielsweise Python verwenden, müssen Sie für alle Herausforderungen entweder Python 2 oder Python 3 verwenden.
- Sie müssen alle Herausforderungen lösen. Antworten, die nur einen Teil der Herausforderungen lösen, gelten als nicht wettbewerbsfähig.
- Sie können integrierte Sprachen oder Standardbibliotheken verwenden.
Bestenliste
Das Stapel-Snippet am Ende dieses Beitrags generiert die Rangliste aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamtrangliste.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? 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>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Antworten:
Pyth,
155153149142141131130 Bytes4 Bytes dank @FryAmTheEggman
1, 5 und 4 Bytes dank @Jakube
J+1SQp\xtjmsm.[`*dk\ 4JJ
Konstruieren Sie die Multiplikationstabelle aus der Liste
[1, 1, 2, 3, ...]
. Geben Sie+1SQ
dann a ausx
und entfernen Sie das erste Zeichen.@.Om^Cd2z2
Einfach.
c*.t.tyvw7Z*QQ9.81
Verwendet die Formel
sin(2 theta) * v^2/a
, wotheta
ist der Winkel,v
ist die Anfangsgeschwindigkeit unda
ist9.81
o_/zNSz
Einfach.
hxeM.u,eNsNQU2Q
Generieren Sie Fibonacci-Paare, ermitteln Sie den Index der Eingabe und fügen Sie einen hinzu.
IqSzSJj.-zsQQJ
Verwenden Sie die bagwise Subtraktion, um das Präfix und Suffix aus dem Wort zu entfernen, und setzen Sie den Rest des Wortes in die Mitte. Wenn das Ergebnis davon keine Permutation der Eingabe ist, drucken Sie sie nicht aus.
C.tolNQz
Nach Länge sortieren. Gefüllte transponieren. Nochmal transponieren.
Jsttz/L~%Jd[25T5 1
Die Anzahl der ausgegebenen Münzen ist in der Reihenfolge
[quarters, dimes, nickels, pennies]
.Entfernen Sie die ersten 2 Zeichen der Eingabe und wandeln Sie sie in int um, um Cent zu erhalten. Speichern in
J
. Ordnen Sie für jede Nummerd
in der Liste[25, 10, 5, 1]
nachträglich den WertJ%d
zuJ
und generieren Sie dann den Wert/Jd
mit dem ursprünglichen Wert vonJ
. Drucken.C-M.p,JS{srMQhMJ
Verwandle die Tupel in Bereiche, kombiniere sie zu einer Liste, dedupliziere und sortiere sie. Speichern Sie dies in
J
. FormJ, hMJ
undhMJ, J
gegebenenhMJ
wirdJ
mit jedem Element von 1. Führen Subtraktion in beiden Fällen erhöht. Ersteres sind die unteren Enden der Bereiche, letzteres sind die oberen Enden. Transponiere sie paarweise und drucke sie aus.quelle
CJam, 162
qi),0Xt_ff{*s4Se]}N*s0'xt
q_:i:mh\,mq/
(© Dennis)q~P*90/ms\_**9.81/
q$e`{0=~}$e~
(© Dennis)1_{_2$+}99*]qi#)
qS/(1+1$s{1$#Lt}/)@@**
q~{,}$_z,f{W$e]}p;
q2>i25A5]:md]W%p
q~${_0=2$1=>{+$3%}|}*]p
Dennis willigte ein, sich zusammenzuschließen :)
quelle
CJam, 223 Bytes
Aufgabe 1, 35 Bytes
Probieren Sie es online aus.
Aufgabe 2, 12 Bytes
Probieren Sie es online aus.
Aufgabe 3, 27 Bytes
Probieren Sie es online aus.
Aufgabe 4, 12 Bytes
Probieren Sie es online aus.
Aufgabe 5, 17 Bytes
Probieren Sie es online aus.
Aufgabe 6, 25 Bytes
Probieren Sie es online aus.
Aufgabe 7, 19 Bytes
Probieren Sie es online aus.
Task 8, 33 Bytes
Probieren Sie es online aus.
Task 9, 43 Bytes
Probieren Sie es online aus.
quelle
Haskell, 650 Bytes
Aufgabe 1, 88 Bytes:
Aufgabe 2, 76 Bytes:
Aufgabe 3, 28 Bytes
Aufgabe 4, 60 Bytes:
Task 5, 64 Bytes
Task 6, 93 Bytes
Task 7, 81 Bytes
Task 8, 73 Bytes
Aufgabe 9, 87 Bytes (eine schamlose Kopie der Antwort von @ MtnViewMark von einer ähnlichen Herausforderung)
quelle
Mathematica 10.3, 465 Bytes
All dies sind anonyme Funktionen. Vielen Dank auch an Martin für die Hilfe beim Golfen, da ich ein Noob bei Mathematica bin.
Task 1, 69 Bytes
\[Transpose]
ist das 3 Byte "transponieren" Symbol.Aufgabe 2, 13 Bytes
oder
(√ ist 3 Bytes). Das
RootMeanSquare
eingebaute ist nicht ganz kurz genug ...Aufgabe 3, 18 Bytes
Aufgabe 4, 57 Bytes
Aufgabe 5, 33 Bytes
oder
oder
Task 6, 178 Bytes
(hat derzeit einen Fehler)Weniger golfen:
Saitenmanipulation ist schrecklich ...
Aufgabe 7, 39 Bytes
Task 8, 46 Bytes
oder
Task 9, 12 Bytes
An den Konstruktor übergebene Intervalle werden automatisch zusammengefasst. Schlag das.
quelle