El desafío es eliminar las vocales (a, e, i, o, u) de la cadena de STDIN (sí, lo sé, simple). Puede esperar que su programa no se ejecute con ningún argumento argv
.
Ejemplo:
This program will remove VOWELS.
So we can now speak without them.
Se cambia a:
Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.
Hay una trampa. La entrada ganadora se decide basándose en el número de bytes diferentes. Por ejemplo a ab
tiene tres bytes diferentes ( a
, b
y el espacio). Si dos o más entradas tendrán la misma cantidad de bytes diferentes, entonces el retroceso se realiza en número de bytes para esas entradas.
code-challenge
string
Konrad Borowski
fuente
fuente
Renée’s naïveté
? Despojado de vocales, eso debería ser, por supuesto,Rn’s nvt
como salida. Parece que estos enfoques son bastante ingenuos si me preguntas. :)Respuestas:
Espacio en blanco binario (2 caracteres distintos, 324 caracteres en total)
TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT
donde S, T, L denota espacio, tabulación, salto de línea, respectivamente. (Obviamente obtenido al convertir la respuesta de espacios en blanco de "breadbox" en espacios en blanco binarios; esta publicación probablemente debería ser un comentario a su respuesta, pero es demasiado larga).
El espacio en blanco binario es un espacio en blanco convertido a un lenguaje de código de prefijo en todas partes usando TS en lugar de T y usando TT en lugar de L; por ejemplo, la instrucción BWS para empujar -5 en la pila es SSTSTSSTSTT en lugar de SSTTSTL, etc. Enlace: Un traductor en ambos sentidos para un lenguaje arbitrario de 3 símbolos y sus versiones de código de prefijo binario .
NB: Sería sencillo diseñar un verdadero intérprete bit a bit para los programas de espacio en blanco binario considerados como secuencias de bits , en lugar de secuencias de caracteres (por ejemplo, utilizando valores de 0,1 bits en lugar de caracteres S, T, respectivamente). Lo anterior sería un programa de 324 bits que requiere 41 bytes de almacenamiento.
fuente
Brainfuck, 8 distintos (2121 en total)
Los personajes: distict
<>+-[],.
. Trabaja con intérpretes que usan-1
paraEOF
.fuente
Renée’s naïveté
enRń’s n̈vt́
, entonces? Eso no me parece correcto, pero si tú lo dices. Puesto que no puede asumir ninguna normalización, es perfectamente razonable queRenée’s naïveté
es realmente"Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"
- o si lo prefiere números mágicos,"Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}"
. Si eliminas las vocales sin sus diacríticos concomitantes, obtienes tonterías extremas. ¡Bienvenido al Brave New Millennium! :)1.166921663690E+1824
bytes para almacenarlo (he subido el número exacto a pastebin, no cabe en este comentario). Me pregunto cuánto tiempo llevaría enviarlo a este sitio.Espacio en blanco, 3 puntos (218 caracteres)
Sabías que se acercaba.
(_ = espacio, ⇥ = tabulador, ↲ = nueva línea)
Aquí está el script codificado en base64:
Y aquí está el programa escrito en forma de ensamblador visible:
fuente
LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSSSSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLSTLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL
. Parece que dos problemas (entre otros) son que está intentando insertar un 0 en la pila usando enSSSL
lugar deSSSSL
, y también está tratando de definir una etiqueta "vacía" usandoLSSL
forskip
.SED (10 bytes distintos, 13 en total)
Uso de la muestra:
salidas:
fuente
I
es mayúscula? Funciona bien cuando losI
caracteres están en minúsculas.I
personaje se reutiliza.ö
yï
son mal utilizados en su ejemplo y los otros dos son consonantes. Aún así, creo que tienes un punto. Pero de esta manera podemos terminar apoyando también a ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮; quizás incluso ,, slǝʍoʌ uʍop ǝpısdn ,, :-)ö
yï
una vez se encontraron en inglés, aunque ahora casi han desaparecido.C,
222019 caracteres distintos.Cartas necesarios para
main
,putchar
,getchar
= 12.Puntuacion -
(){};
= 5.Los operadores -
&-
= 2.main
invoca un comportamiento indefinido (demasiado--
en una línea).No me importa el valor de la expresión, y disminuye
ii
el número correcto de veces.Se puede arreglar fácilmente separando los decrementos con
;
. Pero es mucho más agradable como es.Versión anterior, 20 caracteres: en
realidad 21, porque no me di cuenta de que algunos espacios son significativos y deben contarse, pero se pueden reemplazar con paréntesis fácilmente.
Quizás pueda mejorarse aún más compilando
gcc -nostartfiles
y renombrandomain
a_start
.min
se eliminan (después de un cambio de nombre variable), se_s
agregan. Pero luego necesito usarexit()
, que agrega 3 caracteres.En lugar de
_start
, se puede usar cualquier nombre, y funciona en Linux. Esto permite bajar a 18 caracteres, pero es muy poco estándar.fuente
Perl: 8 o 10 caracteres distintos
s///
solución: 10 distintos, 13 en totalLa técnica (supuesta; ver más abajo) sed siempre funciona también en perl, y produce el número de nombre de caracteres distintos (10):
Por ejemplo:
Son 10 caracteres distintos, como lo demuestra:
El problema con la solución de sed es que su
/i
es no parte de POSIX sed, y por lo tanto no es portátil:Eso se ejecuta en un sistema OpenBSD. Por el contrario, debido a
/i
que siempre es parte del perl estándar, puede contar con que siempre esté allí. A diferencia de sed.Si desea incluir "y" en la lista de vocales, es, por supuesto, una mayor si utiliza la misma técnica:
Y ahora son 14 caracteres en total.
tr[][]
solución: 8 distintos 10 en totalTambién puede usar
tr///
para eliminar cualquier cosa que coincida. Perl incluso puede usar ely///
alias de sed paratr
:que ahora tiene 8 caracteres distintos, pero no funciona en mayúsculas. Termina teniendo que agregar 5 caracteres más para hacer frente a los mapas de casos:
y, por supuesto, ahora son 15 en total.
Sin embargo, agregar "y" a la mezcla como vocal no aumenta el número de caracteres distintos como lo hizo con la
s///
versión:Así que sigue siendo solo el original 8 de un total de 11:
EDITAR : Contabilidad para diacríticos
¿Y qué hay de las entradas como
Renée’s naïveté
? La salida correcta debería ser, por supuestoRn’s nvt
. A continuación, le indicamos cómo hacerlo, utilizando el/r
indicador de v5.14 paras///
:Eso es 27 caracteres distintos:
Se puede recortar de que a 26 si se puede garantizar que se está ejecutando al menos v5.10 mediante el canje de la
print
desay
:Y puede bajarlo a 22 si no le importa mover los diacríticos en lugar de eliminarlos:
Lo cual es ... interesante de ver, por decir lo menos. :) Aquí está su cuenta distinta:
¡Buena suerte con cualquier otro idioma para tratar adecuadamente los signos diacríticos con menos caracteres que este!
fuente
"ɢᴏᴏᴅ ᴘ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"
.ø
.Renée’s naïveté
debería darRné’s nïvté
.GolfScript (7 bytes distintos, 103 en total)
Suficientemente mejoría sobre la respuesta de w0lf que creo que califica como una respuesta separada:
12 bytes distintos, 13 en total:
fuente
Golfscript (8 bytes distintos, 837 en total)
Explicación:
[97 101 105 111 117 65 69 73 79 85]
(correspondiente a los códigos ASCII dea,e,i,o,u,A,E,I,O,U
). Cada número se representa presionando en la pila el valor9
, seguido del número necesario de)
(operadores de incremento). Por ejemplo, el número67
se obtiene usando9
y 58)
s''+
, la matriz se convierte en la cadena"a,e,i,o,u,A,E,I,O,U"
, que representa todas las vocalesLos 8 caracteres únicos que se utilizaron:
[
,]
,9
,)
,+
,-
,'
y(space)
fuente
Ilegible (2 distintos, 2666 en total)
Como todos están publicando lonas de Turing, pensé en usar esta. No es muy conocido, pero existe ( http://esolangs.org/wiki/Unreadable ) y tiene solo dos caracteres.
fuente
VBA -
2522 bytes distintos (120 en total)Sé que esto no ganará con tantos bytes diferentes, pero aquí está en VBA.
(space)
,(newline)
,"
,,
,(
,)
,=
,a
,b
,c
,d
,e
,E
,I
,l
,n
,O
,p
,R
,S
,u
,1
*
,,,1
permite ignorar el caso. (1
representa la constantevbTextCompare
)fuente
E
enEnd Sub
. Pero bastante agradable, considerando que es básico.E
, y lo he corregido. Creo que estaba demasiado preocupado por la carne del submarino. ;-)e
oE
?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)
por mi recuento de 18 bytes distintos?Replace(s1,)"uOI
y 111 bytes en totalPython 3.x, 19 caracteres distintos, 62 en total
fuente
Renée’s naïveté
, ya sabes.J, 21 caracteres (18 distintos)
fuente
K, 29. (18 bytes distintos)
bytes distintos: {@ & ~ (: 0) en _, "AEIOU}
fuente
ASM - 6 caracteres distintos 520 caracteres de origen (MsDOS .com)
Montado usando A86
fuente
MATL, 8 bytes (todos distintos)
Pruébalo en MATL Online
Solo un golf directo, realmente no encontró ningún truco para reutilizar personajes para reducir el bytecount único.
13Y2
es un literal que contieneaeiouAEIOU
.Tome un duplicado
t
e de la cadena de entrada, haga una matriz lógica (booleana) que indique qué letras de la entrada no son brasas (~
)m
de ese literal e index ()
) en esos lugares, para devolver una matriz de solo caracteres no vocales.fuente
PHP - 30 bytes distintos
fuente
/[aeiou|AEIOU]/
en/[aeiou]/i
? Además, su código también hace|
desaparecer.golpe 26 distintos, 37 en total
ordenado:
Resultado (conserva saltos de línea):
Para tr, no está claro cómo contar: '-d aeiouAEIOU' como 10 o 13:
fuente
tr -d aeiouAEIOU
15.Pitón (23)
Alguien tuvo que hacerlo.
fuente
F #
105 12191 caracteresfuente
Fórmula Excel: 19 bytes distintos (196 en total)
=
,S
,B
,T
,(
,)
,,
,"
,a
,e
,i
,o
,u
,A
,E
,I
,O
,U
,1
* En realidad, hay demasiadas funciones anidadas para trabajar en Excel 2003, pero el concepto está ahí.Dividir las fórmulas en dos celdas logró el efecto deseado. - El resultado está en C1.
fuente
Noether, 16 bytes individuales (17 en total)
Pruébalo en línea!
Utiliza la expresión regular
para eliminar las vocales de la cadena de entrada.
fuente
K (oK) , 16 bytes, 14 distintos
Solución:
Pruébalo en línea!
Explicación:
Usando except (
^
) para filtrar las vocales.fuente