Consciência Posicional

10

Consciência Posicional

Sua tarefa é gerar um programa que, para cada permutação de seus caracteres (que inclui o programa original), produza as posições de cada caractere em relação ao programa original.

Se o seu programa é

Derp

você deve produzir

[0, 1, 2, 3]

(ou algum equivalente). Isto é porque Destá na 0posição th, eé no 1r, r o 2nd, e po 3rd.

Vamos dar outro programa que é o programa original, mas com seus caracteres permutados:

epDr

Você deve produzir

[1, 3, 0, 2]

porque eestá na 1posição r do programa inicial, pé na 3posição rd, Do 0po, e ra 2ND.

Se o programa original tiver dois caracteres repetidos:

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

Em seguida, para a permutação, oe 0o 4na matriz devem estar em ordem crescente:

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

Regras:

  • Seu programa deve conter pelo menos dois caracteres exclusivos.
  • No máximo, os floor(n/2)caracteres devem ser os mesmos.

     aabb (acceptable)
     aaaabc (not acceptable, only floor(6/2) = 3 a's allowed)
    
  • A saída do seu programa pode ser uma matriz (ou algo semelhante) contendo todas as posições dos caracteres em ordem ou uma string com qualquer delimitador, portanto, estas são perfeitamente adequadas:

    [0, 1, 2, 3]
    0,1,2,3
    0 1 2 3
    
clismique
fonte
7
Não acredito que esse desafio permita qualquer solução não trivial, pois praticamente qualquer resposta em qualquer idioma de comprimento> = ~ 5 não será um programa válido para todas as permutações, muito menos um programa que resolva o desafio em questão.
orlp 21/12/16
11
@ Qwerp-Derp Quase ninguém diz nada na caixa de areia. Há um tempo, postei uma pergunta depois de estar na caixa de areia por cerca de um mês (mais ou menos). E somente quando eu postei, foi quando as pessoas apontaram erros e os votos negativos choveram. Na minha opinião sincera, a caixa de areia é inútil.
Ismael Miguel
11
Pela primeira vez, sinto que, neste desafio, uma resposta mais longa seria mais impressionante do que uma resposta mais curta.
Wojowu
11
@ Wojowu Eu posso fazer boliche de código , se isso for possível - o programa mais longo vence.
Clismique
11
O programa 12em R seria válido? Simplesmente imprimiria 12e se permutado; 21.
Billywob

Respostas:

21

Na verdade , 2 bytes

10

Experimente online!

Isso imprime

0
1

enquanto a (apenas) outra permutação

01

impressões

1
0

Como funciona

Na verdade, os dígitos consecutivos são analisados ​​separadamente, então 10empurra 1 na pilha e depois 0 em cima dela.

Quando o programa termina, a pilha é impressa de cima para baixo, para que imprima 0 primeiro, depois um avanço de linha e 1 .

O programa desregulado 01faz o mesmo, na ordem oposta.

Dennis
fonte
11
Outras línguas em que isso funciona; Sério, 05ab1e, ///, 2sable.
Teal pelican
A especificação diz que os números devem ser separados. Ele funciona de forma séria, mas na verdade é realmente apenas seriamente 2.0.
Dennis
7

Geléia , 2 bytes

;J

Experimente online!

Saídas: [0, 1]

Outras J;saídas de permutação :[1, 0]

Como funciona:

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

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