Minha fonte está em ordem, é sua?

14

Seu desafio é escrever um programa, função etc. que calcule se a sequência passada está "em ordem". Isso significa que os caracteres da sequência têm códigos de caracteres que estão na ordem do menor para o maior. O menor código de caractere deve ser o primeiro. Com isso, quero dizer os pontos de código unicode mais baixos para os mais altos. Não importa qual página de código você usa no idioma.

Você deve retornar um valor se a entrada estiver "em ordem" e outro se não estiver. Os valores devem ser distintos, mas não há outra restrição nos valores de saída. Por exemplo, você pode imprimir / devolver / imprimir truepara !1AQaq¡±(em ordem) e falsepara aq!QA. Os dois valores distintos não precisam ser verdadeiros ou falsos ou algo assim, apenas dois valores distintos. Sequências repetidas (por exemplo aa) estão em ordem.

Você só precisa suportar até unicode U+007E( ~) (ascii 126)

No entanto, os caracteres do seu programa devem estar em ordem. Boa sorte e feliz !

programmer5000
fonte
Você não precisa ter valores de verdade / falsidade? duas verdades funcionariam?
Rɪᴋᴇʀ
Além disso, o menor código de caractere sempre está no primeiro caractere? Ou pode ser revertido?
Rɪᴋᴇʀ
12
Honestamente, o Code-golf parece ser uma condição de vitória ruim para essa forma de fonte restrita. O boliche de código para a maioria dos caracteres únicos seria mais interessante.
fənɛtɪk
1
Os contras do @Pavel Pop não funcionam bem para realizar uma tarefa específica de uma maneira específica.
Dennis
2
a seqüência de caracteres é repetida em ordem? por exemplo, está "aa"em ordem?
TSH

Respostas:

14

Braquilog , 2 bytes

.o

Experimente online!

Explicação

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

Como um programa completo, false.ocorre uma falha de asserção , qualquer execução bem-sucedida que não viole nenhuma asserçãotrue.


fonte
9

Gelatina , 2 bytes

Ṣ⁼

Experimente online!

Explicação

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ também possui a funcionalidade correta ("compare a entrada com a entrada classificada"), portanto, foi apenas um caso de executar os dois programas por conta própria para descobrir qual estava em ordem (eu certamente não tenho os pontos de código Unicode dessa parte do conjunto de caracteres estranhos de Jelly memorizado).


fonte
Sua submissão está errada na codificação Jelly, ela precisa estar em ⁼Ṣvez disso. Você pode ver a página de códigos de Jelly aqui .
Erik o Outgolfer
@EriktheOutgolfer Isso é facilmente corrigido; ⁼Ṣfaz exatamente o mesmo que Ṣ⁼.
precisa saber é o seguinte
@steenbergh Esta submissão, como está agora, é inválida. Embora a correção seja fácil, ela ainda não foi aplicada e não é recomendável que outras pessoas editem o código.
precisa saber é o seguinte
1
@EriktheOutgolfer A discussão sobre esta resposta é principalmente sobre qual página de códigos usar: o desafio faz referência ao Unicode (embora não nos diga explicitamente para usá-lo) e o Jelly possui sua própria página de códigos. Qualquer que seja o resultado, fixar essa resposta é trivial. Portanto, eu não chegaria ao ponto de chamar esta resposta de 'inválida' - nem sequer a votaria no estado atual.
214176Preço
@steenbergh eu não downvoted quer, eu estava apenas notificar ais523 :)
Erik o Outgolfer
9

MATL , 5 bytes

GGS\a

Saídas 0se a entrada estiver em ordem, 1caso contrário.

Experimente online!

Explicação

Isso calcula o módulo de (os pontos de código de) cada caractere da entrada com aquele no mesmo índice na entrada classificada. A entrada está em ordem, se e somente se todos os resultados estiverem 0.

Por exemplo, considere a sequência de entrada BCD!. Classificação dá '!BCD. As matrizes de pontos de código são respectivamente [66 67 68 33]e [33 66 67 68]. A computação dos módulos fornece [0 1 1 33], portanto a entrada não está em ordem. Observe como alguns resultados podem ser 0iguais se os valores não forem os mesmos (aqui isso acontece na primeira posição), mas isso não pode ocorrer em todas as entradas, a menos que a entrada esteja em ordem.

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display
Luis Mendo
fonte
8

05AB1E , 3 2 bytes

Obrigado a Kevin por cortar 33% do meu código-fonte!

Experimente online!

Explicação:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.
steenbergh
fonte
D{Qtambém funciona ...
Neil A.
1
@ NeilA.It pode fazer o mesmo, mas os caracteres não estão em ordem. O requisito é que seu código-fonte passe no mesmo teste que os dados. Isso deve render 1 .
18717
1
O Dpode ser removido para -1 usando apenas uma entrada implícita duas vezes.
Kevin Cruijssen 20/01
5

2sable , 2 bytes

Experimente online!

Explicação

{    # sorted input
 Ê   # not equals (implicit input)

Emite 0 se for ordem, senão 1 .

Emigna
fonte
1
@steenbergh: Ah, perdi essa parte do desafio.
Emigna
1
@steenbergh: Fixed! Felizmente nós poderia saída quaisquer valores distintos :)
Emigna
2

Pitão, 2 bytes

<S

Falsesignifica classificado, Truesignifica não classificado.

Suíte de teste

Isso foi bastante trivial de se fazer. A solução mais óbvia para esse problema, sem a fonte restrita, é SIinvariante na classificação. Mas isso não está classificado. Então pensei em qS, que usa implicitamente a variável de entrada duas vezes, verificando se é igual ao seu eu classificado. Mas enquantoq < s , q > S, então isso não quer trabalhar. Mas <vem antes S, e a única maneira pela qual a versão classificada não pode ser menor que o original é se o original foi classificado, pois a versão classificada é a permutação lexicograficamente mínima dos elementos.

isaacg
fonte
1

CGL (CGL Golfing Language) , 4 bytes (não-concorrente)

-:Sc

Explicação:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

Não concorrentes, porque :, Se cforam implementadas após a criação deste desafio.

programmer5000
fonte
Existe prova de que esse idioma foi criado antes desse desafio?
precisa saber é o seguinte
@KritixiLithos sim, e é tecnicamente uma linguagem válida, mas tornarei isso não competitivo porque as funções necessárias para concluir isso foram feitas após esse desafio. O CGL ainda está em andamento e estou usando desafios para me mostrar quais novas funções devem ser adicionadas.
programmer5000