Conscience de la position

10

Conscience de la position

Votre tâche consiste à générer un programme qui, pour chaque permutation de ses caractères (qui inclut le programme d'origine), affiche les positions de chaque caractère par rapport au programme d'origine.

Si votre programme est

Derp

vous devez sortir

[0, 1, 2, 3]

(ou un équivalent). C'est parce que se Dtrouve dans la 0th position, eest dans le 1st, r le 2nd et ple 3rd.

Prenons un autre programme qui est le programme d'origine, mais avec ses caractères permutés:

epDr

Vous devez sortir

[1, 3, 0, 2]

car se etrouve en première 1position du programme d'origine, pest en première 3position, Dla 0th et rla 2nd.

Si le programme d'origine comporte deux caractères répétitifs:

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

Ensuite, pour la permutation, le 0et le 4dans le tableau doivent être dans l'ordre croissant:

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

Règles:

  • Votre programme doit contenir au moins deux caractères uniques.
  • La plupart des floor(n/2)personnages doivent être identiques.

     aabb (acceptable)
     aaaabc (not acceptable, only floor(6/2) = 3 a's allowed)
    
  • La sortie de votre programme peut être soit un tableau (ou quelque chose de similaire) contenant toutes les positions des caractères dans l'ordre, soit une chaîne avec n'importe quel délimiteur, donc ce sont parfaitement bien:

    [0, 1, 2, 3]
    0,1,2,3
    0 1 2 3
    
clismique
la source
7
Je ne crois pas que ce défi permette une solution non triviale car pratiquement n'importe quelle réponse dans n'importe quelle langue de longueur> = ~ 5 ne sera pas un programme valide pour chaque permutation, sans parler d'un programme qui résout le défi à portée de main.
orlp
1
@ Qwerp-Derp Presque personne ne dit rien sur le bac à sable. Il y a quelque temps, j'ai posté une question après avoir été dans le bac à sable pendant environ un mois (environ). Et ce n'est que lorsque je l'ai posté, que les gens ont signalé des erreurs et que les downvotes ont plu. À mon avis, le bac à sable est inutile.
Ismael Miguel
1
Pour une fois, j'ai l'impression que dans ce défi, une réponse plus longue serait plus impressionnante qu'une réponse plus courte.
Wojowu
1
@Wojowu Je peux faire du bowling de code , si c'est possible - le programme le plus long gagne.
clismique
1
Le programme 12en R serait-il valide? Il serait simplement imprimé 12et s'il était permuté; 21.
Billywob

Réponses:

21

En fait , 2 octets

10

Essayez-le en ligne!

Cela imprime

0
1

tandis que la (seule) autre permutation

01

impressions

1
0

Comment ça fonctionne

En fait, les chiffres consécutifs sont analysés séparément, donc 10pousse 1 sur la pile, puis 0 sur le dessus.

Une fois le programme terminé, la pile est imprimée de haut en bas, donc elle imprime d' abord 0 , puis un saut de ligne, puis 1 .

Le programme dérangé 01fait de même, dans l'ordre inverse.

Dennis
la source
1
Autres langues dans lesquelles cela fonctionne; Sérieusement, 05ab1e, ///, 2sable.
Pélican bleu canard
La spécification dit que les chiffres doivent être séparés. Cela fonctionne dans Sérieusement, mais n'est en réalité que Sérieusement 2.0.
Dennis
7

Gelée , 2 octets

;J

Essayez-le en ligne!

Les sorties: [0, 1]

Autres J;sorties de permutation :[1, 0]

Comment ça fonctionne:

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

J;
J          [1...len(z)], here just [1]
 ;         ...Concatted with 0
Lait
la source