Dieses Problem besteht aus fünf Programmierproblemen, die jeder Software-Ingenieur in weniger als einer Stunde lösen kann. Dies ist selbst eine interessante Lektüre. Die ersten paar Probleme sind trivial, aber das vierte kann etwas interessanter sein.
Ausgehend von einer Liste von Ganzzahlen, die in der Standardeingabe durch ein einzelnes Leerzeichen getrennt sind, drucken Sie die größten und kleinsten Werte aus, die durch Verketten der Ganzzahlen in einer eigenen Zeile erhalten werden können.
Beispielsweise:
Eingang:
5 56 50
Ausgabe:
50556
56550
Verschiedene Punkte der Bestellung:
- Die Reihenfolge der Ergebnisse ist am kleinsten als am größten.
- Es können nur die kleinsten und größten Werte ausgedruckt werden (es ist ungültig, alle Variationen zu durchlaufen und auszudrucken).
- Die Liste enthält immer zwei oder mehr Ganzzahlen.
- Es ist möglich, dass das größte und das kleinste Ergebnis gleich sind. Bei der Eingabe
5 55
die Nummer555
zweimal ausgedruckt werden. - Die ganzen Zahlen sind nicht unbedingt verschieden.
5 5
ist eine gültige Eingabe. - Führende
0
s für ganze Zahlen sind keine gültigen Eingaben. Sie müssen nicht berücksichtigen05 55
.
Da dies Codegolf ist, gewinnt der kürzeste Einstieg.
05
) enthält, betrachten wir sie als05
oder einfach5
?Antworten:
CJam,
1413 BytesZiemlich einfach. So funktioniert es:
Probieren Sie es hier online aus
quelle
e!
(erscheint noch nicht einmal im Wiki).Pyth,
1413 BytesErzeugt alle Permutationen und sortiert sie, wobei das erste und das letzte Element gedruckt werden.
quelle
J
inline:hJSmsd.pcz)eJ
Python 2,
10499 BytesJa.
Edit: Danke an xnor für -5 Bytes!
quelle
sorted
funktioniert ohne Klammern, aber Sie können auch das Sortieren vermeiden und einfachmin
und nehmenmax
.Mathematica,
6458 BytesDies definiert eine unbenannte Funktion, die eine Zeichenfolge verwendet und die beiden Zeilen druckt. Es ist ziemlich einfach wie die anderen: alle Permutationen abrufen, zusammenfügen, sortieren und das erste und letzte Ergebnis drucken.
Dank Alephalpha werden sechs Bytes gespart.
quelle
{#&@@#,Last@#}
=>#[[{1,-1}]]
JavaScript (ES6)
54 7285Das ist einfacher als es scheint. Sortieren Sie sie einfach lexikografisch. Die gute Nachricht ist: Genau so funktioniert einfaches Javascript.Naja ... nein, das ist falsch ... trotzdem kann ein (verschachtelterer) Lexikographenvergleich den Job machen.Hinweis: Wenn a und b numerisch sind, ist a + [b] eine Abkürzung für a + '' + b, da wir eine Zeichenfolgenverkettung und keine Summe benötigen.
Anmerkung 2: Der Zeilenvorschub in `` ist signifikant und muss gezählt werden
Bearbeiten Diskutiere nicht mit einem Moderator (... nur ein Scherz)
Edit2 Fixed I / O-Format mit Popups (siehe Standard für Code Golf: Eingabe- / Ausgabemethoden )
Test In der Firefox / FireBug-Konsole
quelle
J, 34,
36,42Byteseinfache rohe Gewalt:
quelle
Haskell, 98 Bytes
Teilen Sie die Eingabezeichenfolge in Leerzeichen auf, verketten Sie jede Permutation und Sortierung. Erstes und letztes Element drucken.
quelle
Julia, 77 Bytes
Dadurch wird eine unbenannte Funktion erstellt, die einen Vektor als Eingabe akzeptiert und das Minimum und Maximum der Permutationen der verbundenen Elemente ausgibt. Um es zu nennen, geben Sie ihm einen Namen, z
f=v->...
.Ungolfed + Erklärung:
Vorschläge sind willkommen!
quelle
Javascript ( ES6 ) 134
Leider gibt es in JS keine eingebaute Permutationsfunktion :(
quelle
R, 59 Bytes
quelle
combinat::permn
. H.::
dass das Paket geladen werden muss (überlibrary
oderrequire
), aber nicht:::
. Ich könnte falsch liegen; müssen ein wenig mehr darüber lesen. Vielen Dank.permn
direkt ohne einlibrary(combinat)
.library(combinat)
bevor Sie siepermn
trotzdem verwenden können. ;)Ruby 75
Nicht meine 'Muttersprache', aber eine, die ich ausprobiert habe ... daher könnte dies (möglicherweise) einige Golftipps gebrauchen. Trotzdem kein schlechter Teilnehmer.
Ich würde nicht sagen, dass es elegant ist, wenn alles in die Sprache eingebaut ist. Es sollte ziemlich offensichtlich sein, wie das genau funktioniert.
quelle
{|x|x.join}
mit(&:join)
für eine 3 - Byte - Einsparungen.puts$<.read.split.permutation.map(&:join).minmax
puts gets.split.permutation.map(&:join).minmax
Perl,
79,70B (68 + 2)use Math::Combinatorics;say for(sort map{join'',@$_}permute@F)[0,-1]
Mit anrufen
echo 13 42 532 3 6|perl -M5.10.0 -an scratch.pl
. Es gibt eine 2-Byte-Strafe für-an
. Schade um die Länge des Modulnamens ...quelle
JavaScript (ES6), 85 Byte
Verwendung:
quelle