Positionsbewusstsein

10

Positionsbewusstsein

Ihre Aufgabe ist es, ein Programm zu generieren, das für jede Permutation seiner Zeichen (einschließlich des ursprünglichen Programms) die Positionen jedes Zeichens relativ zum ursprünglichen Programm ausgibt.

Wenn Ihr Programm ist

Derp

Sie müssen ausgeben

[0, 1, 2, 3]

(oder ein Äquivalent). Dies liegt daran, dass Des sich in der 0dritten Position befindet, esich in der 1st, r der 2nd und pder 3rd befindet.

Nehmen wir ein anderes Programm, das das ursprüngliche Programm ist, dessen Zeichen jedoch permutiert sind:

epDr

Sie müssen ausgeben

[1, 3, 0, 2]

weil ees sich in der 1st-Position des ursprünglichen Programms befindet, pbefindet es sich in der 3r-Position, Ddem 0th und rdem 2nd.

Wenn das ursprüngliche Programm zwei sich wiederholende Zeichen enthält:

abcda -> [0, 1, 2, 3, 4]

Dann müssen für die Permutation das 0und das 4im Array in aufsteigender Reihenfolge sein:

baadc -> [1, 0, 4, 3, 2] (0 first, then 4)

Regeln:

  • Ihr Programm muss mindestens zwei eindeutige Zeichen enthalten.
  • Die meisten floor(n/2)Zeichen sollen gleich sein.

     aabb (acceptable)
     aaaabc (not acceptable, only floor(6/2) = 3 a's allowed)
    
  • Die Ausgabe Ihres Programms kann entweder ein Array (oder etwas Ähnliches) sein, das alle Positionen der Zeichen in der richtigen Reihenfolge enthält, oder eine Zeichenfolge mit einem beliebigen Trennzeichen. Diese sind also vollkommen in Ordnung:

    [0, 1, 2, 3]
    0,1,2,3
    0 1 2 3
    
Clismique
quelle
7
Ich glaube nicht, dass diese Herausforderung eine nicht triviale Lösung zulässt, da praktisch jede Antwort in einer Sprache mit einer Länge von> = ~ 5 nicht für jede Permutation ein gültiges Programm ist, geschweige denn ein Programm, das die vorliegende Herausforderung löst.
Orlp
1
@ Qwerp-Derp Fast niemand sagt etwas auf dem Sandkasten. Vor einiger Zeit habe ich eine Frage gestellt, nachdem ich ungefähr einen Monat (oder so) im Sandkasten war. Und erst als ich es gepostet habe, haben die Leute auf Fehler hingewiesen und die Downvotes geregnet. Meiner ehrlichen Meinung nach ist der Sandkasten nutzlos.
Ismael Miguel
1
Diesmal habe ich das Gefühl, dass bei dieser Herausforderung eine längere Antwort beeindruckender wäre als eine kürzere.
Wojowu
1
@Wojowu Ich kann es Code-Bowling machen , wenn das möglich ist - das längste Programm gewinnt.
Clismique
1
Wäre das Programm 12in R gültig? Es würde einfach drucken 12und wenn permutiert; 21.
Billywob

Antworten:

21

Eigentlich 2 Bytes

10

Probieren Sie es online aus!

Dies wird gedruckt

0
1

während die (einzige) andere Permutation

01

druckt

1
0

Wie es funktioniert

In Tatsächlich werden aufeinanderfolgende Ziffern separat analysiert. 10Drücken Sie also 1 auf den Stapel und dann 0 darauf.

Wenn das Programm beendet ist, wird der Stapel von oben nach unten gedruckt, sodass zuerst 0 , dann ein Zeilenvorschub und dann 1 gedruckt werden .

Das gestörte Programm 01macht dasselbe in umgekehrter Reihenfolge.

Dennis
quelle
1
Andere Sprachen, in denen dies funktioniert; Im Ernst, 05ab1e, ///, 2sable.
Blaugrüner Pelikan
Die Spezifikation besagt, dass die Zahlen getrennt werden müssen. Es funktioniert zwar im Ernst, ist aber eigentlich nur im Ernst 2.0.
Dennis
7

Gelee , 2 Bytes

;J

Probieren Sie es online aus!

Ausgänge: [0, 1]

Andere Permutationsausgaben J;:[1, 0]

Wie es funktioniert:

;J
;          Concats 0 with...
 J         [1...len(z)], here just [1]

J;
J          [1...len(z)], here just [1]
 ;         ...Concatted with 0
Milch
quelle