La mia fonte è in ordine, è tua?


14

La tua sfida è scrivere un programma, una funzione, ecc. Che calcoli se la stringa passata è "in ordine". Ciò significa che i caratteri della stringa hanno codici di caratteri che sono in ordine dal più piccolo al più grande. Il codice char più piccolo deve essere il primo. Con questo intendo i punti di codice unicode più bassi al più alto. Non importa quale codepage usi la tua lingua.

È necessario restituire un valore se l'input è "in ordine" e un altro in caso contrario. I valori devono essere distinti, ma non vi sono altre restrizioni sui valori di output. Ad esempio, è possibile stampare / restituire / stampare trueper !1AQaq¡±(in ordine) e falseper aq!QA. I due valori distinti non devono necessariamente essere verità o falsità o qualcosa del genere, ma solo due valori distinti. Le stringhe ripetute (ad es. aa) Sono in ordine.

Devi solo supportare fino a unicode U+007E( ~) (ascii 126)

Tuttavia, i caratteri del tuo programma devono essere in ordine. Buona fortuna e buon gioco !


Non hai bisogno di avere valori di verità / falsità? due verità funzionerebbero?
Rɪᴋᴇʀ

Inoltre, il codice char più piccolo è sempre al primo char? O può essere invertito?
Rɪᴋᴇʀ

12
Il code-golf sembra onestamente una cattiva condizione di vittoria per questa forma di fonte limitata. Il bowling di codice per la maggior parte dei personaggi unici sarebbe più interessante.
fəˈnɛtɪk,

1
I contro di @Pavel Pop non funzionano bene per raggiungere un determinato compito in un modo particolare.
Dennis,

2
è la stringa ripetuta in ordine? per esempio, è "aa"in ordine?
tsh

Risposte:


14

Brachylog , 2 byte

.o

Provalo online!

Spiegazione

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

Come programma completo, viene fornito un errore di asserzione, vengono fornite false.tutte le esecuzioni riuscite che non violano alcuna asserzionetrue.


9

Gelatina , 2 byte

Ṣ⁼

Provalo online!

Spiegazione

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

⁼Ṣ ha anche la giusta funzionalità ("confronta l'input con l'input ordinato"), quindi era solo un caso di eseguire i due programmi su se stessi per capire quale fosse in ordine (di certo non ho i codici codificati Unicode di questa parte dello strano set di caratteri di Jelly memorizzato).


Il tuo invio è errato nella codifica Jelly, deve essere ⁼Ṣinvece. Puoi vedere la tabella codici di Jelly qui .
Erik the Outgolfer,

@EriktheOutgolfer Che si risolve facilmente; ⁼Ṣfa esattamente lo stesso di Ṣ⁼.
Steenbergh,

@steenbergh Questo invio, così come è in questo momento, non è valido. Anche se la correzione è semplice, non è stata ancora applicata ed è sconsigliato per gli altri modificare il codice.
Erik the Outgolfer,

1
@EriktheOutgolfer La discussione su questa risposta riguarda principalmente quale tabella codici usare: la sfida fa riferimento a Unicode (anche se non ci dice esplicitamente di usarla) e Jelly ha una sua tabella codici. Qualunque sia il risultato, fissare questa risposta è banale. Pertanto, non andrei al punto di chiamare questa risposta "invalida" - non vorrei nemmeno ridimensionarla nel suo stato attuale.
Steenbergh,

@steenbergh Nemmeno io ho effettuato il downgrade, stavo solo avvisando ais523 :)
Erik the Outgolfer

9

MATL , 5 byte

GGS\a

Emette 0se l'ingresso è in ordine, 1altrimenti.

Provalo online!

Spiegazione

Questo calcola il modulo di (i punti di codice di) ciascun carattere dall'input con quello allo stesso indice nell'input ordinato. L'input è in ordine se e solo se tutti i risultati lo sono 0.

Ad esempio, considerare la stringa di input BCD!. L'ordinamento dà '!BCD. Le matrici di punti di codice sono rispettivamente [66 67 68 33]e [33 66 67 68]. Il calcolo dei moduli dà [0 1 1 33], quindi l'ingresso non è in ordine. Nota come alcuni risultati possono essere 0anche se i valori non erano gli stessi (qui accade nella prima posizione), ma ciò non può avvenire in tutte le voci a meno che l'input non sia in ordine.

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

8

05AB1E , 3 2 byte

Grazie a Kevin per aver tagliato il 33% del mio codice sorgente!

Provalo online!

Spiegazione:

      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.

D{Qfunziona anche ...
Neil A.

1
@ NeilA. Potrebbe fare lo stesso, ma i personaggi non sono in ordine. Il requisito è che il codice sorgente superi lo stesso test dei dati. Questo dovrebbe produrre 1 .
Steenbergh,

1
La Dpuò essere rimosso per -1 semplicemente utilizzando un ingresso implicito due volte.
Kevin Cruijssen,


5

2 file , 2 byte

Provalo online!

Spiegazione

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

Emette 0 se è ordine, altrimenti 1 .


1
@steenbergh: Ah, ho perso quella parte della sfida.
Emigna,

1
@steenbergh: risolto! Fortunatamente abbiamo potuto generare valori distinti :)
Emigna

2

Pyth, 2 byte

<S

Falsesignifica ordinato, Truesignifica non ordinato .

Suite di test

Questo è stato abbastanza banale da inventare. La soluzione più ovvia a questo problema, senza la fonte limitata, è SIinvariante sotto l'ordinamento. Ma questo non è risolto. Poi ho pensato qS, che utilizza implicitamente la variabile di input due volte, controllando se è uguale al suo sé ordinato. Ma mentre q < s, q > Squindi neanche questo ha funzionato. Ma <viene prima Se l'unico modo in cui la versione ordinata non può essere inferiore all'originale è se l'originale è stato ordinato, poiché la versione ordinata è la permutazione lessicograficamente minima degli elementi.


1

CGL (CGL Golfing Language) , 4 byte (non concorrenti)

-:Sc

Spiegazione:

- 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.

Non competitiva perché :, Se csono stati implementati dopo la creazione di questa sfida.


Esistono prove che questa lingua è stata creata prima di questa sfida?
user41805

@KritixiLithos sì, ed è tecnicamente un linguaggio valido, ma lo renderò non competitivo perché le funzioni necessarie per completarlo sono state fatte dopo questa sfida. CGL è ancora in fase di elaborazione e sto usando delle sfide per mostrarmi quali nuove funzioni dovrebbero essere aggiunte.
programmatore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.