Usando el idioma de su elección, escriba la función / script / programa más corto que pueda que identifique la palabra con el mayor número de letras únicas en un texto.
- Las letras únicas deben incluir cualquier carácter distinto que use codificación UTF-8 .
- Las versiones en mayúsculas y minúsculas del mismo personaje son diferentes y distintas;
'a' != 'A'
- Las versiones en mayúsculas y minúsculas del mismo personaje son diferentes y distintas;
- Las palabras están unidas por cualquier carácter de espacio en blanco.
- Las 'letras' son cualquier símbolo que puede ser representado por un solo carácter unicode.
- Su código debe leer el documento de texto, no se permite la precarga / codificación del texto.
- La salida debe ser la palabra, seguida del recuento de letras únicas.
llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch - 18
- Cualquier delimitador / espacio entre los dos valores depende de usted, siempre que haya al menos un carácter para separarlos.
- En el caso de que exista más de una palabra con el conteo más alto, imprima todas las palabras para ese conteo, con una nueva línea delimitadora.
superacknowledgement - 16 pseudolamellibranchiate - 16
- Este es el código de golf, por lo que gana el código más corto.
Esta respuesta en inglés. SE me inspiró para crear este desafío. El ejemplo usa solo una lista de palabras , pero cualquier texto debe poder procesarse.
LlanfairPG
es una palabra galesa y contiene letras del alfabeto galés,ll
ych
ambas son letras individuales en el idioma galés.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+~`<>/\\?'";:{}[],.
es una "palabra" válida?Respuestas:
APL (56)
Esta es una función (la pregunta dice que está permitida) que toma una cadena y devuelve una matriz de palabras y longitudes únicas.
Uso:
Explicación:
⎕ML←3
: establece el nivel de migración en 3 (de modo que⊂
es una partición en lugar de encerrar)W←⍵⊂⍨⍵≠' '
: almacenar enW
la cadena dada, donde cada partición consiste en caracteres que no son espacios en blanco.⍙←⍒∆←↑∘⍴∘∪¨W
: obtenga la cantidad (⍴
) de∪
elementos únicos ( ) en cada parte (¨
) deW
, y almacénelos∆
, luego obtenga el orden de clasificación cuando se ordene hacia abajo en this (⍒
) y guárdelo en⍙
.∆[⍙
...]
: ordenar∆
por⍙
, así que ahora tenemos las longitudes únicas en orden.∆∘.=∆←∆
: almacene el ordenado∆
nuevamente∆
y vea qué elementos∆
son iguales.↑+/
: suma las filas (ahora sabemos cuántos elementos son iguales a cada elemento) y luego toma el primer elemento (ahora sabemos cuántos elementos son iguales al primer elemento, es decir, cuántas de las palabras están vinculadas para el primer lugar).W[⍙]⍴⍨
: ordenaW
por⍙
y toma la primera N, donde N es el número que acabamos de calcular.{⍵,⍴∪⍵}¨
: para cada uno de estos, obtenga la palabra en sí y la cantidad de caracteres únicos en la palabra⊃
: formato como matrizfuente
Mathematica
96115Editar : el código ahora encuentra todas las palabras del número máximo de caracteres. Me niego a tratar las comas como caracteres de palabras.
Ejemplos
o
o
Ejemplos más largos
Sorpresa: ¡La palabra más "única" en la Declaración de Independencia es también la palabra más singular en Alicia en el país de las maravillas !
fuente
Python 2 (110 (98 usando entrada de archivo))
.
Cosas para mejorar: impresión (33 caracteres)
La puntuación se considera letras.
fuente
NameError: global name 'r' is not defined
. Después de añadir comillas simples alrededor delr
:AttributeError: 'file' object has no attribute 'split'
. Python 3.3.0:SyntaxError: invalid syntax 'print i,c'
.Este es mi primer codegolf, estoy muy emocionado :) También eso significa que probablemente no sea bueno.
Groovy
127117112105Editar: dado que las funciones parecen estar permitidas aquí, hay una en 105. También cambié el nombre de las variables para hacer que la primera columna lea ACDC, porque eso es importante en cualquier tipo de código fuente:
Lo llamarías así:
Sin función con entrada estándar en 112 :
Entrada: Lorem Ipsum Texto de primo
Todos los scripts de salida:
¿Alguien tiene una idea de cómo hacerlos más maravillosos?
fuente
Perl 78 bytes
Interpretación de la restricción "El código debe leer el documento de texto" para indicar que las opciones de la línea de comandos que leen y analizan la entrada no están permitidas. Al igual que con la solución PHP a continuación, solo los caracteres 10 y 32 se consideran delimitadores de palabras. La entrada y la salida también se toman de la misma manera.
PHP 128 bytes
Los únicos caracteres que se consideran delimitadores de palabras son el carácter 10 y el carácter 32. El resto, incluida la puntuación, se considera parte de la palabra.
Contiene algunos caracteres binarios, lo que ahorra comillas, pero como resultado debe guardarse con una codificación ANSI para que funcione correctamente. Alternativamente, se puede usar esta versión, que es 3 bytes más pesada:
Muestra de E / S:
entrada 1:
salida 1:
entrada 2:
salida 2:
fuente
incredulity
tiene 10 letras únicas, no 11.GoRuby 2.0.0 - 66 caracteres
Las soluciones a continuación en realidad no encontraron todas las coincidencias, sino solo una. Aquí está mi versión final:
Ejemplos:
produce:
GoRuby 2.0.0 - 29 caracteres (formato de salida no exacto)
Espera entrada de stdin. Sin embargo, el formato de salida es un poco diferente. Por ejemplo:
GoRuby 2.0.0 -
4240 caracteresespera entrada de stdin
Ruby 1.9.3 - 6965 caracteresespera entrada de stdin (igual que el anterior, pero sin abreviaturas de GoRuby)
fuente
Javascript
163 155 152162 bytesEsto es lo más corto que puedo obtener:
En esta versión,
/\s/
separa las palabras según el espacio en blanco, por lo que incluye signos de puntuación, comas, puntos, etc., como parte de las palabras. Esto se cambia fácilmente/\b/
a no incluido.Veré qué puedo hacer con for-loops en lugar de forEaches en un momento.
E / S:
fuente
In the event more than one word exists with the highest count, print all words for that count, **with one new line delimiting**.
Scala 129 caracteres:
fuente
R - 106 caracteres
Como una función con el texto de entrada como parámetro:
Y algunos ejemplos:
O R - 100 caracteres
Como una función con la ruta al archivo de texto como parámetro:
Uso:
fuente
Python
176168fuente
Python3 119
Lee de un archivo llamado
a
.Probado con los textos de entrada de @primo:
fuente
VBScript - 430 / VBA - 420
VBScript:
VBA:
fuente