Inspiriert von Silicon Valley „Drei-Komma - Club“ Szenen wie diese , in dieser Herausforderung werden Sie zehn Menschen den „Komma - Club“ , zu denen sie jeweils gehören erzählen.
Wenn Sie mit dem Begriff "Komma-Club" nicht vertraut sind, lassen Sie mich erklären: Sie sind im Ein-Komma-Club, wenn das Geld, das Sie haben, im Bereich von 1.000,00 bis 999.999,99 US-Dollar liegt. Sie sind im Zwei-Komma-Club, wenn er zwischen 1.000.000,00 USD und 999.999.999,99 USD liegt. Diese "Clubs" wiederholen sich durch den Dreikomma-Club, da kein Individuum auf der Erde (AFAIK) mehr als eine Billion US-Dollar besitzt (japanischer Yen wäre sehr schnell eine andere Geschichte). Die Anzahl der Kommas auf Ihrem Bankkonto gibt gemäß den in den USA und Großbritannien am häufigsten verwendeten Notationsstandards den Komma-Club an, zu dem Sie gehören. Die gleichen "Komma" -Regeln gelten für negative Zahlen (obwohl Sie nicht im negativen Komma-Club sein möchten): negative Beträge im Inklusivbereich [-0.01, -999.
Die Testfälle
Friend Amount
John 100000
Jamie 0.05
Kylie 1549001.10
Laura 999999999.99
Russ 986000000
Karla 1
Reid 99.99
Mark 999.99
Manson 1000.01
Lonnie 999999999999.00
Nelly -123.45
Die richtigen Antworten:
John is in the 1-comma club.
Jamie is in the 0-comma club.
Kylie is in the 2-comma club.
Laura is in the 2-comma club.
Russ is in the 2-comma club.
Karla is in the 0-comma club.
Reid is in the 0-comma club.
Mark is in the 0-comma club.
Manson is in the 1-comma club.
Lonnie is in the 3-comma club.
Nelly is in the 0-comma club.
Welches Array-Setup Sie auch benötigen, um ein friends
Array und ein amounts
Array zu erhalten, zählt nicht für Ihre Punktzahl. Für Python zählt der folgende Code also nicht:
f = ['John', 'Jamie', 'Kylie', 'Laura', 'Russ', 'Karla', 'Reid', 'Mark', 'Manson', 'Lonnie']
a = ['100000', '0.05', '1549001.10', '999999999.99', '986000000', '1', '99.99', '999.99', '1000.01', '999999999999.00']
Bearbeiten: Bitte beachten Sie die überarbeiteten Testfälle
Ich habe die eigentlichen String-Kommas aus den Testfällen entfernt, um die Sache etwas schwieriger zu machen, anstatt nur Kommas zu zählen.
"Name number,Name number,..."
akzeptabel?-$1,234.56
auch im 1-Komma-Club?"<name> is in the <number of commas>-club."
Antworten:
JavaScript (ES6), 80 Byte
Nimmt ein Array von [friend, amount] Arrays und gibt ein Array von "friend is in the n-comma club" zurück. Streicher. Fügt nachstehende Nullen hinzu, sodass die Länge für den 0-Komma-Club 6-8, für den 1-Komma-Club 9-11, für den 2-Komma-Club 12-15 usw. beträgt.
https://jsfiddle.net/cau40vmk/1/
quelle
Math.log10(n*n)/6|0
.|0
auf Null abzuschneiden , also gibt es die richtige Antwort für Jamie.PostgreSQL, 61 Bytes
@x
ist der absolute Wert vonx
,log(x)
ist der Logarithmus zur Basis 10 unddiv(y, x)
berechnet den ganzzahligen Quotienten von y / x.Installieren:
Ausgabe:
quelle
Jelly ,
3432 BytesEine dyadische Verknüpfung (Funktion), die eine Liste von Bankguthaben als Zahlen (Dezimalzahlen / Ganzzahlen) und eine Liste von Namen als Zeichenfolgen verwendet und eine Liste von Zeichenfolgen zurückgibt.
Probieren Sie es online! - Die Fußzeile
çY
ruft einfach die Funktion auf und verbindet die resultierende Liste mit Zeilenvorschüben, so dass sie eine schöne Ausgabe hat, wenn sie als vollständiges Programm ausgeführt wird.Wie?
quelle
PHP,
7674 BytesZum Glück muss ich nicht auf int setzen (wie ich es in C tun müsste); PHP macht das implizit für
%d
.quelle
Mathematica (86 Bytes)
Das Setup (mit Namen als Zeichenketten, Geld als Zahlen):
Der Versuch:
Alle String-Funktionen von Mathematica enthalten "String" im Namen, daher denke ich, dass die Protokolle kürzer sind. Das
Max[...,0]
ist, um mit den lästigen negativen Zahlen oder der negativen Unendlichkeit für Leute umzugehen, die zwischen -1 und 1 Dollar besitzen. Das Protokoll einer negativen Zahl enthält imaginäres Material, aber Mathematica ignoriert dies beim Aufnehmen einesFloor
!quelle
Japt , 36 Bytes
Dabei wird der Betrag als erste Eingabe und der Name als zweite Eingabe übernommen.
Erläuterung
Japt verwendet die Shoco-Bibliothek zur Komprimierung von Strings.
Inspiriert von der Lösung von @ Neil .
7 Bytes gespart dank @ETHproductions
Probieren Sie es online!
quelle
Vw0 x4 l /3-2|0
in der Mitte tun und dabei 6 Bytes sparen :-)V+`...{w0...
MATL,
504843 BytesProbieren Sie es bei MATL Online aus
Erläuterung
quelle
R, 68 Bytes
Die Einrichtung:
Die Lösung:
Nehmen Sie das Basis-10-Protokoll des absoluten Werts des Kontos, runden Sie es ab und drucken Sie es mit den Namen aus.
Ich bin nicht sicher, ob es kleiner sein könnte, wenn
a
ein Zeichenvektor wäre ...quelle
log10
Aufruf erzeugtNaN
s für Negative. Sieht aus wielog10(abs(a))
würde funktionieren.abs(x)
Verwenden Sie stattdessenpmax(a,1)
- dies nimmt alles weniger als 1 und macht es 1, was gute Ergebnisse für negative Zahlen ergibt. Und stattdessenfloor(log10(...)/3)
können Sie verwendenlog10(...)%/%3
. Ich denke, das bringt es auf 66 Bytes (und für Negative korrigiert).cat()
und\n
... Drucken der Vektor mit den Saiten in ihm an die Konsole könnte in Betracht gezogen werden gut genug (* ahem * wie die Python Antworten).JavaScript, 59 Bytes
3 Bytes gespart dank @ETHproductions
2 Bytes gespart dank @Cyoce
Demo
Code-Snippet anzeigen
quelle
`${}`
und Sie können die Funktion Curryn=>m=>...
statt(n,m)=>...
Vim, 72 Bytes
Irgendwie sollte ich zeigen, dass es eine nachlaufende Rückkehr gibt, aber unsicher, wie. Dies ist nur eine einfache Regex-Antwort, die mit Sicherheit von jeder Regex-Sprache übertroffen werden kann. Ich hätte V verwendet, aber ich denke, dass die Ersatzbefehle in V verwenden
/
standardmäßig als Trennzeichen verwendet werden, und ich konnte nicht herausfinden, wie man es dazu nicht über die Teilung zu beschweren.Übernimmt Eingaben als OP-Tabelle und gibt Werte als Tabelle zurück, wobei jedoch die Finanzinformationen durch "Ist im X-Komma-Club" ersetzt werden.
Probieren Sie es online!
quelle
\-=
fügt nichts hinzu. Wenn Sie die zusätzlichen Leerzeichen in Ihrer Eingabe entfernen und auch die Regex ändern, können\v (\d*).*;
Sie 4 Bytes sparen05AB1E , 32 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 2, 69 Bytes
Richten Sie unsere Arrays ein:
Und unsere Funktion kann dann sein:
Geben uns:
Wenn das Array mit dem in der Frage angegebenen Array identisch sein muss, kostet die Lösung 76 Byte:
quelle
Powershell, 82 Bytes
Angenommen, ein 2D-Array-Eingang von
cc.ps1 @(@("John",100000),@("Jamie",0.05),@("Kylie",1549001.10),@("Laura",999999999.99),@("Russ",986000000),@("Karla",1),@("Reid",99.99),@("Mark",999.99),@("Manson",1000.01),@("Lonnie",999999999999.00),@("Nelly",-123.45))
Die Ausgabe ist
John is in the 1-comma club. Jamie is in the 0-comma club. Kylie is in the 2-comma club. Laura is in the 2-comma club. Russ is in the 2-comma club. Karla is in the 0-comma club. Reid is in the 0-comma club. Mark is in the 0-comma club. Manson is in the 1-comma club. Lonnie is in the 3-comma club. Nelly is in the 0-comma club.
quelle
Haskell, 71 Bytes
Definiert einen Operator '#', der die richtige Antwort liefert. Z.B:
Leider hat Haskell keine kompakte
log10
Funktion wie viele andere Sprachen, aber eine nützlichelogBase
Funktion, was bedeutet, dass wir unsere Antwort nicht durch 3 teilen müssen. LeiderlogBase 1000 0.05
handelt es sich um eine negative Zahl, daher müssen wir die verwenden länger,truncate
alsfloor
es abzurunden.Volles Programm inklusive Testfälle:
Gibt die folgenden Ergebnisse aus:
quelle
K, 66 Bytes
quelle
Python 2.7 ,
89 8684 BytesProbieren Sie es online!
Vollständiges Programm, das ein Tupel von zwei Listen - Namen als Zeichenfolgen, Bankguthaben als Zahlen - verwendet und die resultierenden Zeichenfolgen druckt.
quelle
C #, 125 Bytes
Anonyme Funktion, die das Ergebnis im OP-Format druckt.
Volles Programm mit Testfällen:
quelle
Python 3 (
207 159 110 9586 Byte, danke an @iwaseatenbyagrue)Ein bisschen Setup:
Mein Versuch:
Ergebnisse:
Edit: alles in absolute Werte umwandeln sparte mir 15 Bytes.
quelle
["%s is in the %d-comma club."%(p,v.count(','))for p,v in zip(f,a)]
Außerdem müssen Sie eine Byteanzahl einschließen.print'\n'.join([your array])
Ausgabe durchführen und tatsächlich drucken.-123.45
) sind um eins ausgeschaltet (da Sie das zählen-
). Aber warum nicht eine Liste von Zahlen nehmen und speichern (habe ich falsch interpretiert?). Sie müssten import-Anweisungen hinzufügen, und so wie es aussieht, handelt es sich um ein Snippet, kein Programm oder eine Funktion (wie es die Standardeinstellungen sind, und von Änderungen wird abgeraten, es sei denn, es gibt einen guten Grund).math.ceil
Funktion meiner Partitur wahrscheinlich einiges an Overhead hinzufügt.(-len(str(abs(v)).split('.')[0])
mitlen(str(int(float(v))))
. In Ihrem Testset gibt es keine negativen Zahlen (in den Beispielen gibt es eine). Wenn Sie vollständig sein möchten, geben Sie 5 Bytes auslen(str(abs(int(float(v)))))
- das spart Ihnen dann nur 4 Bytes.Perl 6,
10795 BytesNicht meine stolzeste Arbeit, gib mir einen Kopf hoch, wenn ich irgendwelche Golftechniken vergessen habe. EDIT: -12 Bytes dank @Ven
quelle
^@f.elems
? Aber das brauchst du nicht.elems
,for ^@f
funktioniert. Sie müssen nicht benennen$x
, verwenden Sie$_
stattdessen. Und benutze nicht printf, benutze"{"interpolation"}"
.for @f
du nicht ? Sie können ihn$++
als Index verwenden (und in ihn indexieren@a
).Python 2, 87 Bytes
Etwas älter (90 Bytes):
Übernimmt die Eingabe als Liste von Tupeln (Name, Menge).
Ich mache das auf meinem Handy in der Schule, damit ich es später testen kann.
quelle
Gleichstrom,
5654 BytesDies übernimmt die Eingabe vom Stapel, der mit dem Vornamen oben im Stapel, der ersten Nummer, dem zweiten Namen, der zweiten Nummer usw. vorgeladen werden sollte.
Hier ist ein Beispiel für das Laden des Stacks und das Ausführen des Makros, g:
die die übliche Ausgabe erzeugt,
Hier ist eine Exegese des Codes:
Beachten Sie, dass ich in Edit 1
dZrX-
(d = dup, Z = Länge der Zahl, r = Swap, X = Bruch, - = Subtrahieren) durch1/Z
(Teilen Sie die Zahl durch 1, wobei die Standardskala von Null auf eine ganze Zahl verkürzt wird; dann ist Z = Zahl Länge), spart zwei Bytes.quelle
Swift ,
166158145 BytesUnd hier ist das Wörterbuch:
Probieren Sie es hier aus!
quelle
Clojure, 108 Bytes
Ich bin mir nicht sicher, ob der Betrieb an Schwimmern kurzgeschlossen ist als bei Zeichenfolgen. Ich bin mir nicht sicher, ob eine Antwort ohne Funktion in Ordnung ist, die eine Folge von Antworten zurückgibt.
quelle
Rebol, 118 Bytes
Ungolfed mit Array-Deklaration:
Ausgabe:
quelle
Java 8
154141 BytesUngolfed
quelle
String.valueOf
und(((""+Math.abs(m.get(k).longValue())).length()-1)/3)
stattdessen verwenden.k->
.