Rimuovi le vocali senza usare troppi caratteri diversi


10

La sfida è rimuovere le vocali (a, e, i, o, u) dalla stringa da STDIN (sì, lo so, semplice). Puoi aspettarti che il tuo programma non verrà eseguito con nessun argomento in argv.

Esempio:

This program will remove VOWELS.
So we can now speak without them.

È cambiato in:

Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

C'è un problema. La voce vincente viene decisa in base al numero di byte diversi. Ad esempio a abha tre diversi byte ( a, be spazi). Se due o più voci avranno lo stesso ammontare di byte diversi, il fallback viene eseguito sul numero di byte per quelle voci.


9
Un lavoro per il linguaggio degli spazi bianchi
jfs,

Che dire di input come Renée’s naïveté? Spogliato di vocali, che ovviamente dovrebbe essere Rn’s nvtcome output. Sembrare come questi approcci sono tutti abbastanza ahem ingenuo se mi chiedete. :)
tchrist,

Se rimuovi é, potresti voler rimuovere anche y.
utente sconosciuto

4
@tchrist, leggi la domanda. Dice di rimuovere a, e, i, o, u. Sei fuori tema, per favore lascialo cadere.
stand del

1
@tchrist: Soprattutto la sfida non diceva "tutte le vocali" ed elencava ciò che dovremmo considerare rimovibile.
utente sconosciuto

Risposte:


2

Spazio bianco binario (2 caratteri distinti, 324 caratteri totali)

TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT

dove S, T, L indica rispettivamente spazio, tabulazione, avanzamento riga. (Ottenuto spudoratamente convertendo la risposta di Whitespace da "breadbox" in Binary Whitespace - questo post dovrebbe probabilmente essere un commento alla sua risposta, ma è troppo lungo.)

Lo spazio bianco binario è lo spazio bianco convertito in un linguaggio con prefisso usando ovunque TS invece di T e usando TT anziché L; ad es. l'istruzione BWS per spingere -5 nello stack è SSTSTSSTSTT invece di SSTTSTL, ecc. Collegamento: un traduttore bidirezionale per un linguaggio arbitrario a 3 simboli e le sue versioni binarie di prefisso .

NB: Sarebbe semplice progettare un vero interprete bit per bit per i programmi di spazi bianchi binari considerati come sequenze di bit , piuttosto che sequenze di caratteri (ad esempio utilizzando rispettivamente 0,1 valori di bit anziché i caratteri S, T). Quanto sopra sarebbe quindi un programma a 324 bit che richiede 41 byte di memoria.


13

Brainfuck, 8 distinti (2121 totali)

>,+[-<>>>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>[-]+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>[-]++<[-<+>>>>->>>->>>->>>->>>->>>->>>->>>->>>->>>-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>[<<<]+>-[<-<.>>-]<[<<<]<[-]>,+]

I personaggi Distict: <>+-[],.. Funziona con interpreti che usano -1per EOF.

$ echo '
Questo programma rimuoverà VOWELS.
Quindi ora possiamo parlare senza di loro.
'| bf vowel-rm.bf

Ths prgrm wll rmv VWLS.
Sw cn nw spk wtht thm.


1
In base ai requisiti indicati, questa è la risposta migliore; ma OTOH è il peggiore in quanto utilizza ogni personaggio sintatticamente significativo nella sua lingua.
dan04,

3
@tchrist: presuppone ASCII. Comunque, solo {a, e, i, o, u} sono nei requisiti.
Jon Purdy,

1
Quindi va bene trasformarsi Renée’s naïvetéin Rń’s n̈vt́, allora? Non mi sembra giusto, ma se lo dici tu. Dal momento che non si può assumere qualsiasi normalizzazione, è perfettamente ragionevole che Renée’s naïvetéè veramente "Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"- o se si preferisce numeri magici, "Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}". Se rimuovi le vocali senza i relativi segni diacritici, otterrai una stupidità estrema. Benvenuti nel Brave New Millennium! :)
tchrist,

1
Usa Unary, avresti un solo personaggio distinto! :-P esolangs.org/wiki/Unary
marinus

3
@marinus, l'ho convertito in Unary e avevo solo bisogno di 1.166921663690E+1824byte per memorizzarlo (ho caricato il numero esatto su pastebin, non si adatterebbe a questo commento). Mi chiedo quanto tempo ci vorrebbe per inviarlo a questo sito.
Konrad Borowski

10

Spazio bianco, 3 punti (218 caratteri)

Sapevi che stava arrivando.

↲___↲____↲⇥↲⇥_____↲___⇥_____⇥↲___⇥___⇥_⇥↲___⇥__⇥__⇥↲___⇥__⇥⇥⇥⇥↲___⇥_⇥_⇥_⇥
↲___⇥⇥____⇥↲___⇥⇥__⇥_⇥↲___⇥⇥_⇥__⇥↲___⇥⇥_⇥⇥⇥⇥↲___⇥⇥⇥_⇥_⇥↲↲___⇥↲_↲_↲⇥_⇥↲___
_↲⇥⇥⇥⇥__⇥↲⇥_↲↲_↲_⇥↲↲__↲↲⇥__↲↲_↲↲↲__⇥↲____↲⇥⇥⇥_↲_↲⇥___↲⇥↲__↲_↲_↲↲____↲↲↲↲

(_ = spazio, ⇥ = tab, ↲ = newline)

Ecco lo script codificato in base64:

CiAgIAogICAgCgkKCSAgICAgCiAgIAkgICAgIAkKICAgCSAgIAkgCQogICAJICAJICAJCiAgIAkg
IAkJCQkKICAgCSAJIAkgCQogICAJCSAgICAJCiAgIAkJICAJIAkKICAgCQkgCSAgCQogICAJCSAJ
CQkJCiAgIAkJCSAJIAkKCiAgIAkKIAogCgkgCQogICAgCgkJCQkgIAkKCSAKCiAKIAkKCiAgCgoJ
ICAKCiAKCgogIAkKICAgIAoJCQkgCiAKCSAgIAoJCiAgCiAKIAoKICAgIAoKCgo=

Ed ecco il programma scritto in forma visibile simile ad un assemblatore:

ioloop: charin  0
        push    0, 'A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'
ckloop: dup
        jz      out
        get     0
        sub
        jz      skip
        jump    ckloop
skip:   jz      ioloop
        jump    skip
out:    get     0
        dup
        jz      done
        charout
        jump    ioloop
done:   exit

Odora di Acme :: Candeggina per me. :)
tchrist

Quando converto il tuo programma "simbolico" in Whitespace, ha errori fatali di sintassi.
res

È strano. Ti sei ricordato di rimuovere le newline effettive prima di fare la conversione? Dovrei solo includere una codifica base64 dello script reale.
breadbox

1
Sì, l'ho fatto - la tua versione base64 si decodifica esattamente in quello che sto usando. Ecco una versione "STL" (con S, T, L codifica Spazio, Tab, AvanzRiga rispettivamente): LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSS‌​SSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLS‌​TLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL. Sembra che due problemi (tra gli altri) siano che stai provando a spingere uno 0 nello stack usando SSSLinvece di SSSSL, e anche cercando di definire un'etichetta "vuota" usando LSSLper skip.
res

1
Scusate il ritardo ... Ho appena confermato che davvero la versione 0.3 (binaria Linux) di Edwin Brady dell'interprete di Whitespace esegue davvero il vostro programma senza lamentele. Sto usando l'implementazione di Ruby (disponibile nella stessa pagina), che non consente la sintassi che stai usando.
res

8

SED (10 byte distinti, 13 in totale)

s/[aeIou]//gI

Esempio di utilizzo:

echo The quick brown fox jumps over the lazy dOg. | sed -e s/[aeIou]//gI

uscite:

Th qck brwn fx jmps vr th lzy dg.

Mi chiedo solo, perché Imaiuscole? Funziona bene quando i Icaratteri sono minuscoli.
Konrad Borowski,

2
@GlitchMr L'ho appena fatto per sottolineare che il Ipersonaggio viene riutilizzato.
Cristian Lupascu,

1
@tchrist Non credo che l'OP abbia menzionato vocali francesi nel suo post. Inoltre, mi piace scrivere programmi ingenui. :-)
Cristian Lupascu,

3
Sono abbastanza sicuro öe ïsono abusato nel tuo esempio e le altre due sono consonanti. Tuttavia, penso che tu abbia un punto. Ma in questo modo potremmo finire per supportare anche ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; forse anche ,, slǝʍoʌ uʍop ǝpısdn ,, :-)
Cristian Lupascu,

1
@ w0lf, quegli usi öe ïsono stati trovati una volta in inglese, anche se ora sono quasi scomparsi.
Joe,

7

C, 22 20 19 caratteri distinti.

Lettere necessari per main, putchar, getchar= 12.
punteggiatura - (){};= 5.
Gli operatori - &-= 2.

i;ii;
p(c){
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-i-i-i-i)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-ii-(-i-i-i))&&
    (c&ii-(-ii-ii))-(-ii-ii-ii-ii-ii-ii-ii-i-i)&&
    (c&ii-(-ii-ii))-(i-ii-ii-ii-ii-ii-ii-ii-ii-(-i-i))&&
    putchar(c);
}
a(c){c-i&&n(p(c));}
n(c){a(getchar());}
main(){
    n(i---ii---ii---ii---ii---ii---ii---ii---ii---ii---ii---ii---i);
}

maininvoca un comportamento indefinito (troppo --in una riga).
Non mi interessa il valore dell'espressione e diminuisce iiil numero giusto di volte.
Può essere risolto facilmente separando i decrementi con ;. Ma è molto più bello di quello che è.

Vecchia versione, 20 caratteri:
In realtà 21, perché non ho notato che alcuni spazi sono significativi e devono essere contati, ma possono essere sostituiti facilmente con parentesi.

ii;iii;c;a;
main(i){
    i=c;i-=--c;
    ii=-i-i-i-i-i-i-i-i-i-i-i;
    iii=i-ii-ii-ii-ii-ii-ii-ii-ii-ii-ii;
    -(c=a=getchar())-i&&main(
        (c&=ii- -ii- -ii)- -            a&&
        -ii-ii-ii-ii-ii-ii-  i-         c&&
        -ii-ii-ii-ii-ii-ii- -i- -i- -i- c&&
        iii- -ii- -ii- -ii-  i-i-i-i-i- c&&
        iii- -ii- -ii- -ii- -i-         c&&
        iii- -ii- -ii-       i-i-i-i-   c&&
        putchar(a));
}

Può forse essere ulteriormente migliorato, compilando gcc -nostartfilese rinominando mainin _start. minvengono rimossi (dopo qualche rinominazione variabile), _saggiunti. Ma poi ho bisogno di usare exit(), che aggiunge 3 caratteri.
Invece di _start, è possibile utilizzare qualsiasi nome e funziona su Linux. Ciò consente di scendere a 18 caratteri, ma è molto non standard.


6

Perl: 8 o 10 personaggi distinti

s/// soluzione: 10 distinti, 13 in totale

La tecnica (presunta; vedi sotto) sed funziona sempre anche in perl e produce il numero di nomi di caratteri distinti (10):

s/[aeiou]//gi

Per esempio:

$ echo 'This program will remove VOWELS. So we can speak without them.' | 
  perl -ple 's/[aeiou]//gi'
Ths prgrm wll rmv VWLS. S w cn spk wtht thm.

Sono 10 personaggi distinti, come dimostra:

$ echo 's/[aeiou]//gi' | perl -nle '@s{split//}=(); print scalar keys %s'
10

Il problema con la soluzione sed è che la sua /iè non parte POSIX sed, e quindi non è portatile:

$ echo 'This program will remove VOWELS. So we can speak without them.' | 
  sed -e 's/[aeiou]//gi'
sed: 1: "s/[aeiou]//gi": bad flag in substitute command: 'i'

È in esecuzione su un sistema OpenBSD. Al contrario, poiché /ifa davvero sempre parte del perl standard, puoi contare sul fatto che è sempre lì. A differenza di sed.

Se vuoi includere "y" nell'elenco delle vocali, è ovviamente uno maggiore se usi la stessa tecnica:

$ echo 'This nifty program remove any VOWELS. So we easily can speak without them.' | 
  perl -ple 's/[aeiouy]//gi'
Ths nft prgrm rmv n VWLS. S w sl cn spk wtht thm.

$ echo 's/[aeiouy]//gi' | perl -nle '@s{split//}=(); print scalar keys %s'
11

E ora sono 14 personaggi in totale.

tr[][] soluzione: 8 distinti 10 in totale

Puoi anche usare tr///per rimuovere tutto ciò che corrisponde. Perl può persino usare l' y///alias di sed per tr:

y/aeiou//d

che ora è composto da 8 caratteri distinti, ma non funziona in maiuscolo. Alla fine devi aggiungere altri 5 personaggi per far fronte alle casemap:

$ echo 'y/aeiouAEIOU//d' | perl -nle '@s{split//}=(); print scalar keys %s'
13

e ovviamente questo è ora 15 in totale.

Tuttavia, l'aggiunta di "y" al mix come vocale non aumenta il numero di caratteri distinti come nella s///versione:

$ echo 'This nifty program remove any VOWELS. So we easily can speak without them.' | 
  perl -ple 'y/aeiouy//d'
Ths nft prgrm rmv n VOWELS. S w sl cn spk wtht thm.

Quindi questo è ancora solo l'8 originale distinto su 11 totale:

$ echo 'y/aeiouy//d' | perl -nle '@s{split//}=(); print scalar keys %s'
8

EDIT : contabilità per i segni diacritici

E gli input come Renée’s naïveté? L'output corretto dovrebbe ovviamente essere Rn’s nvt. Ecco come farlo, usando il /rflag v5.14 per s///:

$ echo 'Renée’s naïveté' |
  perl5.14.0 -CS -MUnicode::Normalize -nle 'print NFD($_)=~s/[aeiou]\pM*//rgi'
Rn’s nvt

Sono 27 personaggi distinti:

$ echo 'print NFD($_) =~ s/[aeiou]\pM*//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
27

Puoi tagliarlo a 26 se puoi garantire che stai eseguendo almeno la v5.10 sostituendo printa say:

$ echo 'Renée’s naïveté' |
  perl -Mv5.14 -CS -MUnicode::Normalize -nlE 'say NFD($_) =~ s/[aeiou]\pM*//rgi'
Rn’s nvt

$ echo 'say NFD($_) =~ s/[aeiou]\pM*//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
26

E puoi farlo scendere a 22 se non ti dispiace spostare i segni diacritici invece di rimuoverli:

$ echo 'Renée’s naïveté' |
  perl -Mv5.14 -CS -MUnicode::Normalize -nlE 'say NFD($_) =~ s/[aeiou]//rgi'
Rń’s n̈vt́

Il che è ... interessante da guardare, per non dire altro. :) Ecco il suo conteggio distinto:

$ echo 'say NFD($_) =~ s/[aeiou]//rgi' | 
  perl -nle '@s{split//}=(); print scalar keys %s'
22

Buona fortuna a far sì che qualsiasi altra lingua affronti correttamente i segni diacritici usando meno personaggi di così!


1
ɢᴏᴏᴅ ᴘₒᵢⁿᵗ αβουτ 𝐝𝐢𝐚𝐜𝐫𝐢𝐭𝐢𝐜𝐬 𝑦𝑜𝑢 𝒈𝒐𝒕 𝓽𝓱𝓮𝓻𝓮, 𝒷𝓋𝓉 𝔥𝔬𝔴 𝕒𝕓𝕠𝕦𝕥 𝘀𝘁𝘂𝗳𝗳 𝚕𝚒𝚔𝚎 𝕋ℍ𝕀𝕊?
cessò di girare in senso antiorario

@leftaroundabout La maggior parte di ciò viene risolta impegnandosi in una decomposizione NFKD. I greci non contano anche se sono simili, e le calotte piccole non si decompongono in clienti abituali. Il risultato è "ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS", o "\N{LATIN LETTER SMALL CAPITAL G}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL D} \N{LATIN LETTER SMALL CAPITAL P}nt \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER OMICRON}\N{GREEK SMALL LETTER UPSILON}\N{GREEK SMALL LETTER TAU} dcrtcs y gt thr, bvt hw bt stff lk THS".
tchrist,

Ma ci sono alcune vocali latine che non hanno decomposizioni di compatibilità, come ø.
dan04

5
la sfida non dice di rimuovere le vocali con segni diacritici - solo un, e, i, o, u - quindi Renée’s naïvetédovrebbe dare Rné’s nïvté.
stand del

2
Perché le vocali greche non contano, se äèïóű ecc. (Non in [a, e, i, o, u]!) Farebbero? O cirillico, per quella materia (che non sono simili, ma sicuramente vocali).
cessò di girare in senso antiorario

5

GolfScript (7 byte distinti, 103 in totale)

Sufficientemente molto di un miglioramento rispetto w0lf 's risposta che penso che si qualifica come una separata:

[9-99))--9+99))99))))))99)9+))9-9)99--)99-9+9--9+9-))99-9+9)))--9+99-9+-9+9-)99-9+9)))-)99)9-9-)))]''+-

12 byte distinti, 13 totali:

'aeiouAEIOU'-

Grande! Vorrei poterti votare di nuovo.
Cristian Lupascu,

4

Golfscript (8 byte distinti, 837 totali)

[9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) 9))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))]''+-

Spiegazione:

  1. Il programma crea il seguente array di valori interi: [97 101 105 111 117 65 69 73 79 85](corrispondente ai codici ASCII di a,e,i,o,u,A,E,I,O,U). Ogni numero è rappresentato spingendo in pila il valore 9, seguito dal numero necessario di )(operatori di incremento). Ad esempio, il numero 67è ottenuto usando 9e 58 )s
  2. Utilizzando ''+, l'array viene convertito nella stringa "a,e,i,o,u,A,E,I,O,U", che rappresenta tutte le vocali
  3. Il segno di sottrazione ('-') viene quindi utilizzato per sottrarre tutte le vocali dalla stringa di origine

Gli 8 personaggi unici che sono stati utilizzati: [, ], 9, ), +, -, 'e(space)


4

Illeggibile (2 distinti, 2666 totali)

Dato che tutti pubblicano tarp di Turing, ho pensato di usarlo. Non è molto conosciuto ma esiste ( http://esolangs.org/wiki/Unreadable ) e ha solo due personaggi.

'""""'""""'""""'""""""'"""'""'""'""'""'""'""'""'""'""'"""'""""'"""""'"""""""'"""'""""'"""
"'""""'""""""'"""'""""""""'"""""""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"""
"'""""""'""'""'"""'""'""'""'""'""'""'""'"""""""'""'""'"""'""""""'""'""'""'"""'""'""'""'""
'""'""'""'""'"""""""'""'""'""'"""'""""'""""'""""""'""'""'""'""'"""'""'""'""'""'""'""'""'"
"'""'"""""""'""'""'""'""'"""'""""""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""""
"""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""'""'""
'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'""'""'""'""'""'""'""'""
'""'""'""'"""""""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'"""'"""""
"""'""""""""'"""""""'""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'"""'
""'""'"""""""'""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'""'""'""'"""'""""""""'""""
""""'""""""""'""""""""'"""""""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'"""'""'"
"'"""""""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'""'"""'""""""""'""""""""'"""
""""'""'""'""'""'""'"""'""""'""""""'""'""'""'""'""'"""'""""""""'""""""""'""""""""'"""""""
"'"""""""'""'""'""'""'"""'""""""'""'""'""'""'"""'"""""""'""'""'""'"""'""""'""""'""""""'""
'""'""'"""'""'""'""'""'"""""""'""'""'"""'""""""'""'"""'""'""'""'""'""'""'"""""""'""'"""'"
"""'""""""'"""'""'""""""""""'"""""'"""""""'"""'""""'""""'""""""'""'""'""'""'""'""'""'""'"
"'""'""'"""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'""""""""'"""'""""'"""""""""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""
""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'""""'""""""'""'""'""'""'""'
""'""'""'""'""'""'""'""'"""'"""""""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'
"""'"""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'""""'"""""""""'"""""""'""'""'""'
""'""'""'""'""'""'""'""'""'""'""'"""'"""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""
'""'"""'""""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""
'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'"""""""'"
"'""'""'""'""'""'""'""'""'""'""'""'""'"""'""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'
""'"""""""'""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""""'""'""'""'""'""'""'""'""'""'
""'""'"""'""""""""'"""""""'""'""'""'""'""'""'""'""'""'""'""'"""'"""'""""'"""""""""'""""""
""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'""""""""'"""""""'""'""'
""'""'""'""'""'""'""'""'""'""'"""'"'""""""""'"""""""'"""'"""'""""""'"""'""'""""""""""

(+1) Bello ... L'ho verificato con il tuo interprete . È ancora considerato "non approvato", anche se il creatore di questa lingua l'ha approvato ? (Sembra un peccato che la lingua non sia stata definita utilizzando due caratteri di spazi bianchi invece di virgolette singole e doppie; o)))
res

@res Non dovrebbe essere difficile da implementare. Basta scegliere due spazi bianchi e modificare l'interprete in modo che sostituisca inizialmente gli spazi bianchi con virgolette singole e doppie!
ComFreek,

2

VBA - 25 22 byte distinti (120 in totale)

So che questo non vincerà con così tanti byte diversi, ma qui è in VBA.

(space), (newline), ", ,, (, ), =, a, b, c, d, e, E, I, l, n, O, p, R, S, u,1

Sub S(u)
u=Replace(Replace(Replace(Replace(Replace(u,"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)
End Sub

* ,,,1consente di ignorare il caso. ( 1rappresenta la costante vbTextCompare)


Non hai contato il Ein End Sub. Ma abbastanza carino, considerando che è di base.
cessò di girare in senso antiorario

@leftaroundabout Grazie! Assolutamente giusto Ee ho corretto. Penso di essere stato troppo preoccupato per la carne del Sottomarino. ;-)
Gaffi,

In realtà, poiché VBA come lingua supporta la formattazione automatica, puoi modificare la tua risposta in tutte le lettere minuscole (o maiuscole) e VBA correggerà per questo stesso, e poiché è accettato che le lingue di formattazione automatica possano essere considerate prima che si verifichi la formattazione automatica, che significherebbe che puoi rilasciare il eoE
Taylor Scott

potresti configurarlo fino a una funzione finestra immediata come ?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)con il mio conteggio 18 byte distinti ?Replace(s1,)"uOIe 111 byte totali
Taylor Scott

1

Python 3.x, 19 caratteri distinti, 62 in totale

print(''.join(x for x in input() if x.lower() not in 'aeiou'))

Non funziona correttamente su input come Renée’s naïveté, sai.
tchrist,

1

J, 21 caratteri (18 distinti)

'AEIOUaeiou'-.~1!:1[1

1

K, 29. (18 byte distinti)

{i@&~(i:0:0)in(_i),i:"AEIOU"}

byte distinti: {@ & ~ (: 0) in _, "AEIOU}

k){i@&~(i:0:0)in(_i),i:"AEIOU"}`
Hello WoOOrld
"Hll Wrld"

1

ASM - 6 caratteri distinti 520 caratteri sorgente (MsDOS .com)

Montato usando A86

db 10110100xb
db 00000110xb
db 10110010xb
db 11111111xb
db 11001101xb
db 00100001xb
db 01110101xb
db 00000001xb
db 11000011xb
db 10001010xb
db 11010000xb
db 10111110xb
db 00011101xb
db 00000001xb
db 10111001xb
db 00001010xb
db 00000000xb
db 01000110xb
db 00101010xb
db 00000100xb
db 01110100xb
db 11101010xb
db 11100010xb
db 11111001xb
db 10110100xb
db 00000110xb
db 11001101xb
db 00100001xb
db 11101011xb
db 11100010xb
db 01000001xb
db 00000100xb
db 00000100xb
db 00000110xb
db 00000110xb
db 00001100xb
db 00000100xb
db 00000100xb
db 00000110xb
db 00000110xb

Basta scrivere il linguaggio macchina, saranno due caratteri distinti.
ugoren,

1

MATL, 8 byte (tutti distinti)

t13Y2m~)

Provalo su MATL online

Solo un semplice golf, non ho trovato alcun trucco per riutilizzare i personaggi per ridurre il numero unico di byte.

13Y2è un contenuto letterale aeiouAEIOU.

Prendi una duplica tdella stringa di input, crea un array logico (booleano) che indica quali lettere dell'input non sono ( ~) mbraci di quel letterale e index ( )) in quei punti, per restituire un array di soli caratteri non vocali.


0

PHP - 30 byte distinti

<?=preg_replace('/[aeiou]/i','',fgets(STDIN));

1
Non potresti cambiarti /[aeiou|AEIOU]/in /[aeiou]/i? Inoltre, anche il tuo codice fa |scomparire.
Konrad Borowski,

0

bash 26 distinti, 37 totali

c=$(cat -)
echo "${c//[aeiouAEIOU]/}"

smistato:

""$$()-///=AEIOU[]aacccceehiootu{}"

scala> code.toList.distinct.length
res51: Int = 26

scala> code.length
res52: Int = 37

"
  ""$$()-///=AEIOU[]aacccceehiootu{}"


scala> code.distinct.sorted 
res56: String = 
"
 "$()-/=AEIOU[]acehiotu{}"

Risultato (conserva gli avanzamenti riga):

echo "This program will remove VOWELS.
So we can now speak without them." | ./cg-6025-remove-vowels.sh
Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.

Per tr, non è chiaro come contare: '-d aeiouAEIOU' come 10 o 13:

echo "This program will remove VOWELS.
So we can now speak without them." | tr -d aeiouAEIOU

Ho pensato di usare tr, ma ho concluso che, poiché non è un linguaggio di programmazione, avrebbe dovuto essere racchiuso in una shell, quindi avrebbe contato il testo completo di tr -d aeiouAEIOU15.
Peter Taylor,

16 <! - char -reshold-gymnastics ->
utente sconosciuto

15 distinti, 16 in totale.
Peter Taylor,

0

Python (23)

Qualcuno doveva farlo.

print filter(lambda x:x not in'aeiou',raw_input())

3
Che ha "solo" 23 personaggi distinti. Ma non riesce a lavorare su vocali maiuscole.
cessò di girare in senso antiorario

Aggiungendo un nuovo carattere e modificando la variabile da x a c o s è possibile utilizzare lettere minuscole () (o maiuscole) e gestire anche le vocali maiuscole.
fabikw,

0

F # 105 121 91 caratteri

Console.ReadLine()|>Seq.filter(fun c->not("aeiouAEIOU".Contains(c)))|>Seq.iter(printf"%c")

Hmmm ... Ho appena notato che questo codice funzionerà in Linqpad ma non in Visual Studio. E poiché non ho voglia di votare il mio contributo, lo lascerò qui con questo commento fino a quando non avrò capito cosa c'è che non va.
Smetad Anarkist,

0

Formula di Excel - 19 byte distinti (196 in totale)

=, S, B, T, (, ), ,, ", a, e, i, o, u, A, E, I, O, U,1

Cell A1: <Value>
Cell B1: =SUBSTITUTE(SUBSTITUTE(A1,"a",""),"e","")
Cell C1: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"i",""),"o",""),"u",""),"A",""),"E",""),"I",""),"O",""),"U","")

* In realtà ci sono troppe funzioni nidificate per funzionare in Excel 2003, ma il concetto è lì.

Dividere le formule in due celle ha ottenuto l'effetto desiderato. - Il risultato è in C1.



0

K (oK) , 16 byte, 14 distinti

Soluzione:

^[;v,_v:"AEIOU"]

Provalo online!

Spiegazione:

Usando tranne ( ^) per filtrare le vocali.

^[;v,_v:"AEIOU"] / the solution
^[;            ] / except (^) projection
      v:"AEIOU"  / save vowels as v
     _           / lowercase (_), "AEIOU" => "aeiou"
    ,            / join (,)
   v             / uppercase vowels
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.