Ihre Aufgabe ist es, ein Array mit den Zeichenfolgen "quarter", "dime", "nickel" und "penny" beliebig oft in einer bestimmten Reihenfolge zu sortieren und sie so zu sortieren, dass sie in der folgenden Reihenfolge quarter dime nickel penny
vorliegen: größter bis kleinster Geldwert).
Regeln
- Ihr Programm muss ein Array als Eingabe verwenden, das die Namen der US-Münzen enthält, und diese vom größten bis zum geringsten Geldwert sortieren.
- Für diejenigen, die nicht aus den USA stammen oder kein Wechselgeld verwenden, sind die Werte der US-Münzen vom höchsten bis zum niedrigsten:
- Vierteljahr: 25 Cent
- Cent: 10 Cent
- Nickel: 5 Cent
- Penny: 1 Cent
- Für diejenigen, die nicht aus den USA stammen oder kein Wechselgeld verwenden, sind die Werte der US-Münzen vom höchsten bis zum niedrigsten:
- Sie können dieses Array nach Belieben sortieren, solange die Ausgabe nach den oben angegebenen Geldwerten geordnet ist.
- Die Eingabe kann auf jede Art und Weise erfolgen, sei es durch Befehlszeilenargumente oder STDIN.
- Ein Eingabearray besteht aus Kleinbuchstaben wie folgt:
quarter dime nickel nickel quarter dime penny penny
- Das tatsächliche Format der Ein- und Ausgabe liegt bei Ihnen.
Testfälle
"penny nickel dime quarter"
-> "quarter dime nickel penny"
"nickel penny penny quarter quarter quarter dime dime dime dime"
-> "quarter quarter quarter dime dime dime dime nickel penny penny"
"quarter dime nickel nickel quarter dime penny penny"
-> "quarter quarter dime dime nickel nickel penny penny"
Dies ist Codegolf , daher gelten Standardregeln und -lücken.
code-golf
string
array-manipulation
sorting
ckjbgames
quelle
quelle
Antworten:
Japt ,
53 BytesOnline testen!
Erläuterung
Auch ich habe in den letzten Wochen meiner Sprache eine Sortierfunktion hinzugefügt :-)
ñ
ein Array und eine Funktion auf und sortiert das Array so, als ob jedes Element über diese Funktion zugeordnet worden wäre.Die
g
Funktion für eine Zeichenfolge nimmt eine Zahl aufn
und gibt dasn
th-Zeichen in der Zeichenfolge zurück, das umbrochen wird, wennn
es negativ ist oder hinter dem Ende der Zeichenfolge liegt. Die Zeichenfolgen können also wie folgt ausgerichtet werden:Das 9. Zeichen (0-indiziert) jeder Zeichenfolge wurde fett hervorgehoben. Diese sind in der richtigen Reihenfolge, also müssen wir nur noch tun
ñg9
. (Obwohl ich jetzt darauf zurückblicke,ñg5
würde es auch funktionieren ...)quelle
V , 7 Bytes
Probieren Sie es online!
Dabei wird der schicke neue Art Befehl , den ich vor etwa einer Woche V hinzugefügt (
ú
). Süßes Timing!Das funktioniert, indem jede Zeile standardmäßig sortiert wird (ASCII-Werte), aber die erste Übereinstimmung einer bestimmten Regex ignoriert wird. In diesem Fall ist der reguläre Ausdruck
(qu)?
, obwohl er einige grobe Nicht-ASCII-Elemente enthält, um die Verwendung von Backslashes zu vermeiden. Wenn Sie die ersten beiden Buchstaben von "Quartal" ignorieren, beginnt es mit "a", und dann sind alle Münzen bereits in alphabetischer Reihenfolge.Nicht konkurrierende Version, 4 Bytes
Dieses Feature wurde bereits implementiert, aber ich hatte es noch nicht ausgiebig getestet, sodass es einen Fehler aufwies, den ich nur aufgrund dieser Herausforderung bemerkte. Es gibt keine TIO-Verbindung, da TIO leicht zurückliegt.
Dies funktioniert durch umgekehrtes Sortieren jeder Zeile, wobei das erste Zeichen in jeder Zeile ignoriert wird.
quelle
Python, 36 Bytes
Unbenannte Funktion, die die Liste direkt nach der angegebenen Schlüsselfunktion sortiert.
Die Scheiben von jeder Münze Namen werden dann
arter
,dime
,ickel
, undpenny
- die in alphabetischer (oder noch wichtiger, ordinal) um.quelle
el
falsch herumkomme, verpasse ichc
: pBash + Coreutils, 18
Probieren Sie es online aus .
quelle
Python 3 ,
424138 BytesEine unbenannte Lambda-Funktion, die Eingaben als Liste von Zeichenfolgen annimmt, wird an Ort und Stelle sortiert.
(Ausgolfed von Jonathan Allan)
Probieren Sie es online!
Andere Lösungen, mit denen ich herumgespielt habe:
quelle
PowerShell , 21 Byte
Probieren Sie es online!
Erläuterung
Schamlos stahl der Algorithmus in der Antwort von ETHproductions (im Grunde genommen). Ich multipliziere jede Zeichenfolge mit 3 und sortiere dann nach dem 9. Zeichen der resultierenden Zeichenfolge.
quelle
$_
in PowerShell?1,2,3,4 | ForEach-Object { $_*2 }
wird jede Zahl mal 2 ausgeben; Der Skriptblock wird einmal pro Eingabeelement ausgeführt.Gelee , 4 Bytes
Probieren Sie es online! (Die Fußzeile
ÇY
verbindet die resultierende Liste mit Zeilenvorschüben, um einen schöneren Ausdruck zu erhalten.)Wie?
Der N-te Index einer Liste in Jelly ist der N-te Eintrag, der links beginnt, von 1 zählt und bei Bedarf zum Anfang zurückkehrt. (Die 0te ist rechts, die -1te links davon und so weiter).
Das sechste Zeichen von
['d','i','m','e']
is'i'
since six ist also kongruent zu two modulo four.Das sechste Zeichen der vier Münzen ist quart
e
r, di
mel
,p
nicke , enny. Diese sind alphabetisch (oder vor allem ordinal) sortiert.Eine andere Möglichkeit , das Gleiche zu erreichen würde durch die gedrehten Saiten Art sein mit
ṙ5µÞ
, woṙ
dreht sich nach rechts, die Saiten zu machenerquart
,imed
,lnicke
, undpenny
.quelle
Python , 32 Bytes
Probieren Sie es online! Sortiert die Liste an Ort und Stelle.
Die Idee ist, eine Sortierschlüsselfunktion ohne ein zu verwenden
lambda
. Ein guter Kandidat warx.strip
, der die Zeichenkette nimmtx
und am linken und rechten Rand alle Zeichen in der Eingabe entfernt. Zum Beispiel"abcdef".strip("faces") == "bcd"
.Die Methode
"npr".strip
dauert:die lexikographisch sortiert sind. Ich habe die Saite
npr
mit roher Gewalt gefunden.npu
undnpt
auch arbeiten, und es gibt keine kürzer.quelle
Bash (+ Coreutils) 11 Bytes
Golf gespielt
Wie es funktioniert
Umgekehrte Sortierung mit dem "Sortierschlüssel" vom zweiten Zeichen des ersten Feldes (Wort) bis zum Zeilenende, dh:
Prüfung
Probieren Sie es online!
quelle
CJam , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pyke,
975 BytesProbieren Sie es hier aus!
quelle
Retina, 10
610 Bytes gespart dank @ETHproductionsq
zub
b
Zurück zu ersetzenq
Probieren Sie es online aus .
quelle
V ,
87 Bytes1 Byte gespart dank @DJMcMayhem
[Online ausprobieren!]
Siehe die Antwort von @ DJMcMayhem in V (
10 Bytes kürzer als meine)Probieren Sie es online!
Hier ist eine ältere Lösung mit 1 Byte größer, aber ich mag es wirklich.
V , 8 Bytes
[Online ausprobieren!]
Probieren Sie es online!
Erläuterung
Der Puffer hat nun folgendes Format:
Jetzt müssen Sie nur noch die Viertel nach oben verschieben.
quelle
:m0
Ihre alternative Lösung verwenden, um ein Byte zu speichern (und mich zu binden)Úçq/:m0
:move
Japt , 3 Bytes
Probieren Sie es online!
Einige andere 3-Byte-Lösungen:
Probieren Sie es online!
Probieren Sie es online!
quelle
T-SQL,
413634 BytesErläuterung
Angenommen, die Eingabe ist in einer Tabellenvariablen namens
@
mit einer einzelnen Spalte namens vorgeladena
, wobei jeder Wert eine zu sortierende Münze ist.Das
select * from @
Teil ist Boiler-Plate, damit alle Werte zurückgegeben werden. Die wahre Magie geschieht in derorder by
Klausel statt.Mit der gleichen Strategie wie Johnathan Allan , ich sortiere nach den letzten fünf Zeichen (SQL wird die gesamte Zeichenkette zurück , wenn es zu kurz ist):
arter
,dime
,ickel
,penny
.quelle
q
ist der nächste Buchstabe danachp
, also muss für einen einfachen Mod, der zuq
weniger alsp
dem Wert führt, ein Faktor seinq
, der Primzahl ist. Sie könnten zuerst 1 subtrahieren und dann würde ein Modul von 7 funktionieren, aber das würde vermutlich mindestens so viele Bytes wie 113 benötigen.JavaScript (ES6),
3533 BytesTestfälle
Code-Snippet anzeigen
quelle
Befunge, 158 Bytes
Probieren Sie es online!
Das Verarbeiten und Sortieren von Zeichenfolgen ist nicht die Art von Dingen, die Sie normalerweise in Befunge versuchen möchten, aber diese Lösung nutzt die Vorteile von John Kasunich Beobachtung dass wir eigentlich nichts sortieren müssen. Wir zählen nur die Anzahl der Vorkommen jeder Münze (die leicht anhand des ersten Zeichens bestimmt werden kann) und geben dann diese Anzahl der Münznamen in der entsprechenden Reihenfolge aus.
Es ist immer noch nicht konkurrenzfähig mit anderen Sprachen in Bezug auf die Größe, aber dieser Ansatz ist zumindest besser als es gewesen wäre, wenn wir versucht hätten, die Herausforderung als eine Übung zum Sortieren von Zeichenfolgen zu behandeln.
quelle
Pyth, 3 Bytes
Demonstration
Beyogen auf ETHproductions ‚s Antwort in Japt.
Erläuterung:
quelle
APL (Dyalog APL) , 11 Bytes
Übernimmt eine Liste von Zeichenfolgen und gibt sie zurück.
Probieren Sie es online!
{
anonyme Funktion:⍵[
…]
Das Argument von⍋
die aufsteigenden Indizes von↑
die Matrix, deren Zeilen die gepolsterten sind5⌽
Fünf Schritte gedreht¨⍵
Punkte des Arguments}
quelle
Brachylog , 3 Bytes
Probieren Sie es online!
Ansatz aus der Japt-Antwort von ETHproductions gestohlen.
quelle
Schale , 3 Bytes
Probieren Sie es online!
Portiert aus meiner Brachylog-Antwort, die die Japt-Antwort von ETHproductions herausreißt, aber keine exakte Übersetzung ist, da sie Rotation anstelle des einfachen Zugriffs auf das n-te Element verwendet. Dort habe ich es getan, weil Sie
∋
nicht über das Ende der Eingabe hinaus indizieren können (was unter vielen Umständen aufgrund des deklarativen Charakters der Sprache sehr hilfreich ist). In Husk,!
tut man Index über das Ende des Eingangs lassen, mit den gleichen modularen umschlingenden dass Japtñg9
Anwendungen, aber es ist von 1 , so das Programm insbesondere wobei ein Byte länger enden würde:Ö!10
.quelle
Batch, 82 Bytes
Übernimmt Eingaben als Befehlszeilenargumente und gibt sie an STDOUT aus. Arbeitet durch Verketten der Listen, die sich aus dem Filtern der ursprünglichen Liste auf jeder Münze ergeben.
quelle
Ruby, 34 Bytes
Eingabe und Ausgabe als Array von Zeichenfolgen
quelle
Ruby, 31 Bytes
quelle
Ruby, 30 Bytes
Durch Versuch und Irrtum gefundene magische Zahlen. Ein bisschen ungeschickt, aber kürzer als mit
.reverse
.quelle
Perl 6 ,
40 3634 BytesVersuch es
Versuch es
Versuch es
Erweitert:
quelle
Mathematica, 50 Bytes
quelle
RProgN , 18 Bytes
Erklärt
Probieren Sie es online!
quelle
Java 8,
128112 BytesDies ist ein Lambda-Ausdruck für a
java.util.function.Function<String[],String[]>
Erklärung: Gehen Sie für jede der 4 Münzen nacheinander die Eingabe durch und hängen Sie den Namen der Münze jedes Mal an das Ergebnis an, wenn eine Übereinstimmung mit dem eindeutigen Charakter dieser Münze vorliegt. Teilen Sie das Ergebnis in ein Array und geben Sie es zurück.
quelle
Ruby, 27 Bytes
quelle