Mini golf de 9 hoyos: Descripción
- 9 (en su mayoría bastante fáciles) desafíos de golf de código de dificultad variable
- Sanciones por usar el mismo idioma más de una vez
- Todos los desafíos sobre un tema específico (este tema: Manipulación de texto)
- La entrada y salida pueden ser razonables (es decir, STDIN y STDOUT, leer / escribir en un archivo, argumento de función y valor de retorno, etc.) pero NO deben estar codificadas en el programa
- Muy inspirado por 9 Hole Challenge y Text Mechanic
Agujeros
Bolsa de golf con código
Tome dos cadenas como entrada.
Genere el recuento de caracteres de la primera cadena, mientras ignora cualquier ocurrencia de cualquier carácter en la segunda cadena.
Ejemplo:f("foobarbaz", "ao")
=>5
Un pre-texto para jugar al golf
Tome dos cadenas como entrada.
Salida de la primera cadena, con cada línea prefijada con la segunda.
Ejemplo:f("foo\nbar\nbaz", "a")
=>"a foo\na bar\na baz"
Guerra de pestañas vs espacios
Tome una cadenas
, un númeron
y un booleanob
(especificado como quiera) como entrada.
Sib
es verdadero, salidas
con cada pestaña convertida enn
espacios.
De lo contrario, envíe els
con cadan
espacio convertido a pestañas.
Ejemplo:f("if (x) {\n\tdoStuff();\n}", 4, true)
=>"if (x) {\n[sp][sp][sp][sp]doStuff();\n}"
([sp]
significa espacio)Pilares del golf
Tome una cadena
s
, un númeron
y otro númerom
como entrada.
Salidas
en columnas den
líneas cada una ym
caracteres por columna.
También tenga relleno de un espacio entre las columnas.
Ejemplo:f("this is some placeholder text, foo bar baz...", 3, 5)
=>this aceho foo is so lder bar b me pl text, az...
Cartas amistosas
Tome una cadenas
y un númeron
como entrada.
Muestra el grupo den
letras más común ens
.
Si hay un empate, envíe uno o todos ellos.
Ejemplo:f("abcdeabcfghiabc", 3)
=>"abc"
Letras de
Tome una cadena como entrada.huevosrevueltos para el desayuno
Imprima la cadena con todas sus palabras codificadas (orden de letras aleatorizado) excepto sus primeras y últimas letras.
Para simplificar, suponga que la entrada será una lista de "palabras", separadas por espacios (es decir@$&_():;" foo bar
, en ,@$&_():;"
se considera una "palabra").
Ejemplo:f("this is a sentence that will be scrambled")
=>"tihs is a stcneene that wlil be sclamrbed"
ASCIFIAR
Tome una cadena como entrada.
Si la cadena solo contiene números y espacios, reemplace los números con sus respectivos caracteres ASCII (eliminando los espacios).
De lo contrario, haga lo contrario (caracteres a números).
Ejemplo:f("ASCIIfy challenge")
=>"65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
Ejemplo 2:f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")
=>"ASCIIfy challenge"
Transformación mini-mini-markdown
Tome una cadena como entrada.
Salida de la cadena convertida con mini-markdown, como se usa en los comentarios en Stack Exchange.
Esta es una versión aún mini-er: sólo tiene que manejar**bold**
,*italics*
y`code`
.
No necesita manejar anidamiento no válido, como**foo *bar** baz*
. También suponga que cuando vea un delimitador (*
o`
), siempre significará formatear (es decir,te**st**ing
=>te<b>st</b>ing
yfoo* bar *baz
=>foo<i> bar </i>baz
).
Ejemplo:f("**foo** *bar **baz*** `qux`")
=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
Solo los mejores personajes
Tome una cadenas
, un númeron
y una cadenar
como entrada.
Muestra eln
carácter th de cada palabra ens
. (0 indexado, las palabras están separadas por espacios).
Si la longitud de la palabra es menor quen
, user
para esa palabra en su lugar.
Ejemplo:f("this is a test sentence foo bar baz", 2, "-")
=>"i--snorz"
Tanteo
Su puntaje es la suma de los recuentos de caracteres de sus programas. Por cada idioma repetido, multiplique por 110%. Por ejemplo, si tiene tres soluciones Ruby, y el recuento total de caracteres de todas sus soluciones es 1000, su puntaje es 1000 * 1.1 * 1.1 = 1210. Redondee hacia abajo si tiene un puntaje no entero.
¡Buena suerte!
code-challenge
string
multiple-holes
Pomo de la puerta
fuente
fuente
_
no importa ya que especifiqué no incluirlo. He editado para aclarar algunos de los otros.**foo***bar**baz*
?Respuestas:
Puntuación: 382 * 1.1 2 = 462
Idiomas propensos a cambiar.
1. APL,
84Gracias @marinus por eliminar 4 caracteres.
Llamado con las cadenas como los argumentos izquierdo y derecho, por ejemplo.
2. Ruby,
3531Gracias @DoorknobofSnow por eliminar 4 caracteres.
3. Python, 48
4. GolfScript, 20
Asume que los argumentos están en la pila. Prueba en línea
5. J, 50
Llamado con la cadena como el argumento izquierdo y el número como el derecho, por ejemplo.
6. Ruby, 61
7. GolfScript,
393534Nuevamente, se supone que el argumento está en la pila. Prueba en línea
8. Perl, 98
9. Haskell, 36
fuente
f=->s,r{...}
) en lugar de una función. Sin embargo, me niego a votar hasta que se complete: PPython - 697 × 1.1 9 ≈ 1644
Vaya, seguro que amo las lambdas
Nota : 3 y 5 se copiaron descaradamente de la respuesta de Volatility , ya que no pude encontrar una mejor alternativa. Además, esto se hizo solo por diversión .
EDITAR : Gracias a Volatility por los consejos.
fuente
int
, ya que los booleanos son una subclase de ellos, y para 7.all([...])
se pueden acortar ax.replace(' ','').isdigit()
a
.Puntuación 513 * 1.1 5 = 826
Recibió una gran paliza por la pena del mismo idioma. Resolví la mayoría de estos en Ruby solo para terminarlos lo más rápido que pude. Podría cambiar algunos idiomas más tarde. Se agregó un pequeño resumen / explicación en cada respuesta.
1: Python (46)
Primero, una respuesta más corta en Ruby 2.0 (30) que da más penalización y una puntuación general más alta:
2: Ruby 1.9+ (37)
Devuelve cada línea de
s
prefijo cont
:3: Ruby 1.9+ (48)
Devuelve
s
con pestañas reemplazadas porn
espacios o viceversa, dependiendo deb
:4: Ruby 1.9+ (95)
Alguien me disparó.
5: Ruby 1.9+ (58)
Devuelve la ejecución más común de
n
caracteres ens
:6: J (47)
Revuelve el texto de alguna manera; Descaradamente robado literalmente de marinus :
7: Rubí (57 + 1)
Imprime la entrada ASCIIfied o des-ASCIIfied. Corre con el
-p
interruptor.8: Sed (87)
Imprime la entrada convertida de (mini) rebaja a HTML:
9 rubíes 1.9+ (37)
Devuelve una cadena de
n
caracteres th de cada primera palabras
, or
:fuente
<b>test** **test2</b>
de**test** **test2**
?**foo *bar* baz**
?-
operador de código ruby funciona con el enumerador?Trabajo en progreso
1. Java - 66
2. Java - 64
3. Python - 58
4. Python - 84
5)
6)
7. Befunge 98 - 9
8)
9)
fuente
for(char c:b.toCharArray())
yreplace(c+"","");
yreturn s.length();
(o algo así) para que funcione.