Bei einer Liste positiver Ganzzahlen mit mindestens drei verschiedenen Einträgen geben Sie eine Permutation dieser Liste aus, die nicht in aufsteigender oder absteigender Reihenfolge sortiert ist.
Beispiele
1,2,3 -> 2,1,3 or 3,1,2 or 1,3,2 or 2,3,1
1,2,3,3 -> 2,1,3,3 or 3,1,2,3 or 1,3,2,3 etc..
Vielen Dank an @Arnauld und @NoOneIsHere für den Titel!
[2,[1,3]]
.Antworten:
JavaScript (ES6),
3934 BytesSortieren Sie das Array in aufsteigender Reihenfolge, platzieren Sie das letzte Element und verwenden Sie es als erstes Element eines neuen Arrays. Zerlegen Sie dann die verbleibenden Elemente des ursprünglichen Arrays in das neue Array (in JS beide
sort
undpop
ändern Sie das ursprüngliche Array).Probier es aus
quelle
a.sort()
?sort
Methode von JS lexikografisch sortiert.Brachylog , 2 Bytes
Probieren Sie es online!
oder
Probieren Sie es online!
Sortieren dreht dann die Liste
quelle
Gelee , 3 Bytes
Probieren Sie es online!
quelle
Ṣṙ-
funktioniert auch (ich wollte es nur sagen, Sie wussten wahrscheinlich: P)Ṣṙ1
nur drei Bytes? In UTF-8 sind es 7 Bytes.Ohm , 2 Bytes
Probieren Sie es online!
Sortieren und nach rechts drehen.
quelle
Japt , 3 Bytes
Probier es aus
Sortiert (
n
) das Array und dreht es (é
) um ein Element nach rechts.quelle
Python 3 , 31 Bytes
Probieren Sie es online!
-1 Byte dank xnor
quelle
min
am Ende setzen, wird ein Byte gespeichert.APL, 9 Bytes
Probieren Sie es online!
Wie?
⍵[⍋⍵]
- Liste sortieren1⌽
- um 1 drehenquelle
TI-Basic (TI-84 Plus CE), 31 Byte
Fordert zur Eingabe im Format auf
{1,2,3,4}
.TI-Basic ist eine Token-Sprache . Alle hier verwendeten Token bestehen aus einem Byte.
Erläuterung:
quelle
Pyth ,
754 BytesProbieren Sie es online!
-1 Byte dank FryAmTheEggman
quelle
05AB1E , 2 Bytes
Probieren Sie es online!
quelle
05AB1E , 2 Bytes
Probieren Sie es online!
quelle
Netzhaut , 21 Bytes
Probieren Sie es online! Sortieren und drehen Sie wie gewohnt. Zumindest gibt es diesmal keine einheitliche Bekehrung.
quelle
Java 8,
6837 Bytes-31 Bytes dank @Nevay (Java 8 hatte eine
List#sort(Comparator)
Methode vergessen ..)Ändert die Eingabe
ArrayList
, anstatt eine neue zurückzugeben.Erläuterung:
Probieren Sie es hier aus.
quelle
l->{l.sort(null);java.util.Collections.rotate(l,1);}
damit 16 Bytes sparen.l->{l.sort(null);l.add(l.remove(0));}
31 Bytes speichern (erfordert die Verwendung einer Liste mit nicht fester Größe).add
undremove
implementiert werden müssen; Über eine Liste mit fester Größe wird nichts gesagt ... Kevin Cruijssen, da es in den vorherigen Kommentaren viel bessere Alternativen gibt, warte ich auf eine Bearbeitung, bevor ich +1 gebe.Haskell,
3637 BytesVerwenden Sie Ansichtsmuster, um den Anfang einer sortierten Version der Eingabeliste abzugleichen, und hängen Sie dann das erste Element der Liste an den Ende der verbleibenden Liste an.Ansichtsmuster sind es nicht wert. Sortieren Sie die Liste, nehmen Sie den Kopf ab und hängen Sie ihn an das Ende an. In diesem Fall stellt sich heraus, dass die kompakt getippte naive Lösung die beste ist.
quelle
-XViewPatterns
. Diese zu zählen ist der Standardweg, derf(a:b)=b++[a];f.sort
kürzer ist.Perl 6 ,
4319 BytesVersuch es
Versuch es
Beachten Sie, dass
[1..*,0]
dies dazu führen würde((2,3),1)
, also.flat
gibt es etwas, in das Sie es verwandeln können(2,3,1)
quelle
Mathematica, 18 Bytes
Probieren Sie es online!
quelle
RotateLeft@*Sort
Ly , 7 Bytes
Probieren Sie es online!
Ach, die Sorte zu ruinieren ist so teuer!
Erläuterung:
quelle
R
33,3229 BytesÜbernimmt die Eingabe von stdin. Sortiert die Liste und verschiebt dann das erste Element an das Ende, um sicherzustellen, dass es nicht mehr sortiert ist. Drei Bytes wegen Giuseppe gespeichert.
Eine andere Implementierung, gleiche Byteanzahl:
quelle
c(sort(x<-scan())[-1],min(x))
ist 29 Bytes mit im Wesentlichen der gleichen Idee wie bei Ihnen.Ohm , 2 Bytes
Probieren Sie es online!
Ich denke, das ist anders als bei totalhuman, um eine neue Antwort zu schreiben. Ich hoffe, es macht Ihnen nichts aus: P EDIT : Verdammt, Sie haben mich nicht erwischt
quelle
Python, 31 Bytes
Noch eine andere Python-Lösung.
Leider hat dieser die gleiche Länge wie die Antwort von HyperNeutrino .
quelle
Gaia , 3 Bytes
Probieren Sie es online!
Wie bei anderen Antworten: Sortieren
ȯ
und einmal nach links drehen1«
.quelle
Retina , 10 Bytes
Probieren Sie es online!
Dies hinterlässt die Liste mit dem zweithöchsten Element zuerst und dem höchsten Element zuletzt, die nie richtig sortiert sind
quelle
Ruby, 18 Bytes
Eingereicht auf dem Handy. Bitte töte mich nicht für Probleme.
quelle
Pyth, 5 Bytes
Erläuterung
SQ
- Eingabeliste sortieren.>SQ1
- Eingabeliste zyklisch um 1 drehenquelle
Proton , 19 Bytes
Probieren Sie es online!
-2 Bytes indirekt dank xnor
Arbeitet noch nicht an TIO; Warten auf einen Zug.quelle
Python 3 , 28 Bytes
Probieren Sie es online!
a.sort()
sortierta
an Ort und Stelle und kehrt zurückNone
.None
kann als Slicing-Index verwendet werden und entspricht dem Weglassen dieses Index.quelle
Python 3 , 31 Bytes
Probieren Sie es online! oder Überprüfen Sie alle Testfälle.
Inspiriert von Shaggys JS-Antwort .
quelle
RProgN 2 , 2 Bytes
Probieren Sie es online!
quelle
PHP, 44 Bytes
erfordert PHP 5.4 oder neuer für kurze Array-Syntax.
Argumente sortieren, 0. Argument durch entferntes letztes Argument ersetzen, drucken.
Laufen Sie mit
-nr
oder versuchen Sie es online .Das 0-te Argument ist der Name der Skriptdatei,
"-"
wenn Sie PHP mit aufrufen-r
."-"
wird als Zeichenfolge mit den anderen Argumenten verglichen undord("-")==45
ist daher kleiner als eine beliebige Zahl. Die Zahlen selbst, obwohl Strings als Zahlen verglichen:"12" > "2"
.php -nr '<code>' 3 4 2 5 1
undsort($a=&$argv)
führen zu$a=["-","1","2","3","4","5"]
→[array_pop($a)]+$a
ist[0=>"5"]+[0=>"-",1=>"1",2=>"2",3=>"3",4=>"4"]
,was ergibt
[0=>"5",1=>"1",2=>"2",3=>"3",4=>"4"]
.quelle
+
Operator hängt nicht an, er führt zusammen (ohne die Indizes neu zu ordnen; das ist hier aber egal). Der wichtige Punkt ist, dass$a
er auf den Dateinamen des Skripts verweist$argv
und diesen$argv[0]
enthält. Die Argumente beginnen bei Index 1. Ich habe die Beschreibung erweitert. Danke für die Frage.Julia, 23 Bytes
Etwas kürzer als, aber gleichwertig mit
f(x)=circshift(sort(x),1)
. Ich wünschte, ich könnte die Methode, die darauf basiertselect
, kompakter machen, aber ich kann nichtquelle