El desafío de 9 hoyos
- 9 desafíos de golf de código de dificultad variable.
- Sanciones por usar el mismo idioma más de una vez.
La pregunta se actualizará con pares, campeones de hoyos y ganadores de trofeos.
Esto viene de una competencia que tengo con algunos amigos, no es el formato habitual, pero espero que algunos de ustedes aprecien el giro diferente. Desafíos, reglas y trofeos a continuación.
Agujeros
Vía Verde (24)
f(c:string, n:integer)
Imprime una línea que contienen
instancias dec
.En algún lugar en bruto (73)
f(t:string, s:string, n:integer) -> i
¿Dóndei
está el índice de lanth
instancia des
int
.Curry para la cena (6235)
f(x:function, y: function) -> g
¿Dóndeg
está una función que llamaráy
,n
tiempos; donden
es el valor de retorno dex
Escupir (92)
f(p:string)
Escribe para archivar enp
y lo llena con un rectángulo de caracteres aleatorios (ascii) de tamaño aleatorio.Búsqueda del tesoro (75)
f(p:string, c:char) -> (x, y)
Lee el archivo en elp
que contiene una cuadrícula de símbolos y devuelve las coordenadasx
yy
de la primera instancia de ese símbolo dentro de la cuadrícula, supongamos que existe.Puente sobre el río Kwai (179)
f(l:list[int])
Imprime el diagrama de puentes de diferencia paral
. Por ejemplo para[1,7,3,17,1]
/+6\ /-4\ /+14\ /-16\ 1 7 3 17 1
Asegúrese de que los espacios se creen de acuerdo con el tamaño del número anterior. Para un número de 3 dígitos, necesitará 4 espacios entre los dígitos en la línea de abajo.
Captura: en algún lugar, su código debe deletrear pantalones (debe tener al menos 1 delimitadores no alfanuméricos).
tr(ou,se)(rs)
El tiempo vuela cuando estás jugando al golf (1157)
f(p:string) -> [h, m]
Lee el archivop
que contiene una representación ASCII de un reloj analógico, donde la manecilla de la hora se representa con una línea y los minutos con dos. Imprima una lista que contiene dos elementos: las horas y los minutos que se muestran en el reloj. Si solo se ve una mano, suponga que ambas apuntan a esa posición.Aquí están todas las combinaciones posibles para una mano.
\ | / \|/ --o-- /|\ / | \
Estas posiciones, respectivamente, son (12, 1, 3, 5, 6, 7, 9, 11). Suponga que los otros personajes dentro de la esfera del reloj son espacios.
¡Madera! ()
f(p:string) -> b:boolean
Donde p es la ruta a un archivo con una construcción ascii. Los bloques con espacios en blanco debajo caerán. (Excepto por las barras, que permanecen en su lugar si hay un bloque estable en la dirección opuesta a la forma en que se enfrentan). Si el edificio es estructuralmente integral, devuelva verdadero, de lo contrario devuelva falso. Todos los bloques que no son espacios en blanco se cuentan como sólidos y, aparte de las barras, todos caen.Estructuralmente seguro
____ |/\| | |
No es seguro
|__ | |
Versión segura
|__ \\| |
Slacker News (218)
f(s:string, r:string, p:string)
Obtiene los títulos de las 20 mejores historias en Hacker News y cambia todas las instancias des
ar
, luego escribe los nuevos títulos en un archivo html enp
, donde cada título está contenido dentro de un elemento h1.El archivo resultante debería ser algo como esto
<h1>Some title</h1></h1>Some other title</h1>...etc
Captura :
- No puede usar la HN api.
- No puede usar Regex.
- No puede usar llaves angulares en ningún lugar de su código.
Puntuación
- El recuento de caracteres es la longitud de la función que se compilará y ejecutará correctamente. Sin embargo, aún debe enviar el código completo, incluidas las importaciones.
- + 10% por cada idioma repetido en su envío. (Por ejemplo, si usa Ruby para 3 soluciones, su puntaje final se multiplicará por 1.2). Las diferentes versiones del mismo idioma todavía cuentan como el mismo idioma.
- Par será el puntaje promedio para cada hoyo.
- Envíe sus soluciones en una respuesta.
- Tu puntaje general es tu recuento de personajes + tu penalización de idioma, luego redondea.
Trofeos
- Chaqueta dorada - ( @Sprigyig - 1290) Puntuación general más baja
- Shooter - ( @Sprigyig - 9) La mayoría de los idiomas utilizados
- Bunker : el puntaje más alto en cualquier hoyo
- Serpientes en un avión - ( @AsksAnyway - 1727) Mayor presentación de caracteres de Python en una sola solución
- Good Parts - ( @AsksAnyway - 255) Mayor conteo de caracteres JS en una sola solución
- Shakey Steve : la solución más corta que utiliza interfaces
- Usted no es de aquí : la solución de idioma más corta y única que es el idioma tiene la página de Wikipedia más corta.
- Happy Gilmoore - ( @AsksAnyway - 31) La solución más corta que tiene la palabra 'cocodrilo' en el código.
- Monociclo enano mágico : las extensiones predeterminadas de sus 9 archivos fuente de envío son un anagrama perfecto de una palabra en el Diccionario de Oxford.
Solo eres elegible para un trofeo una vez que hayas completado los 9 hoyos
Envíos
- @Sprigyig 1290
- @Firefly 1320
- @grc 1395
- @Trevor M 1465
- @C Gearhart 1654
- @Guy Sirton 1719
- @AsksAnyway 4651
fuente
<
&>
/
posición se refiera a la 1 en punto o las 2 en punto? (y de manera similar para el resto de las diagonales)Respuestas:
Puntuación: 4651
2907 + 60% de penalización
1. GolfScript - 14 caracteres
Uso:
c n a
por ejemplo"test" 3 a
->testtesttest
Feliz gilmoore
2. Python - 72 caracteres
3. Javascript - 255 caracteres
Bunker Good Parts
4. Python - 132 caracteres
5. Python - 89 caracteres
6. Python - 189 caracteres
7. Python - 1727 caracteres
Serpientes en un avión
8. Python - 226 caracteres
9. Python - 203 caracteres
fuente
i<i<42
), ¿o están permitidas siempre que solo las use como operadores?Puntuación: 1320
Tengo mucho que hacer para mejorar este puntaje ... Oh, bueno, al menos evité las penalizaciones por lenguaje repetido. :-)
1. Python (21 caracteres)
La solución "obvia".
2. ECMAScript 6 (47 caracteres)
Encuentra el índice de una manera poco convencional, contando la longitud de la subcadena anterior.
3. J (12 caracteres)
La conjunción incorporada
^:
eleva una función a una potencia (es decir, repite una función un número dado de veces). Es decir,f^:3 y = f (f (f y)))
. Sin embargo, está sobrecargado para aceptar funciones en lugar de números enteros, en cuyo caso ejecuta la función en la entrada para obtener el número de repeticiones. Desafortunadamente, debemos voltear los operandos para la tarea, de lo contrario tendríamos la respuesta correctaf=:^:
.4. C (95 caracteres)
Esta tarea deja bastante espacio para la interpretación y el abuso: ¿está bien simplemente generar un carácter ASCII imprimible al azar y decir que es un rectángulo de dimensiones aleatorias con dimensiones del conjunto {1}? Probablemente no. De todos modos, opté por simple
rand()
pero en realidad probablemente quieras agregar%9
algo o algo si quieres probarlo. En mi caja de Linux no tuve que vaciar el archivo para poder escribirlo (supongo que se lava automáticamente al salir del programa), pero estoy bastante seguro de que tiene que vaciarlo para cumplir con los estándares, así que siéntase libre de agregarfflush(f);
al conteo aquí.5. Haskell (100 caracteres)
Me gusta el patrón repetido entre encontrar la fila y la columna (abstraído a través de
h
).6. Lua (261 caracteres)
Utiliza múltiples valores de retorno y recursividad para lidiar con el cálculo de las diferencias. Me costó unos pocos caracteres hacer coincidir exactamente el resultado de la muestra (agregando la cantidad correcta de espacios en todas partes).
7. Ir (307 caracteres)
Probablemente podría jugar mucho más al golf; Apenas sé Go.
8. CoffeeScript (+ node.js) (223 caracteres)
Un poco barato porque ya tengo JS. Oh bien. Devuelve un valor falso (a saber,
undefined
) o un valor verdadero (a saber,1
) para indicar la respuesta.9. Bash (254 caracteres)
(Se agregaron nuevas líneas después de las tuberías para facilitar la lectura). Trabajar en torno a las restricciones con el shell fue divertido. Me doy cuenta de que probablemente haya una mejor manera de hacerlo
$2,$4,$6,...
, pero esto fue lo que se me ocurrió de todos modos.fuente
f=str.__mul__
Puntuación: 1.394,4
996 caracteres + 40% de penalización
1. Vía Verde - Haskell, 19 caracteres
Uso:
2. Áspero - PHP, 72 caracteres
3. Curry - JavaScript 1.8, 45 caracteres
4. Spew - J, 43 caracteres
Uso:
5. Tesoro - J, 64 caracteres
Uso:
6. Puente - Python, 166 caracteres
7. Tiempo - Python, 205 caracteres
Asume que las líneas están rellenadas con espacio para tener cinco caracteres de ancho. Utiliza pestañas para el segundo nivel de sangría.
8. Madera - Python, 190 caracteres
9. Slacker - Python, 192 caracteres
Gracias a Tyzoid por la idea de acortador de URL.
fuente
Editar: creo que enviaré esto como está: 1290 en total, no se repite el idioma.
Vía Verde, C # 53
Decidí intercambiar idiomas con # 1 y # 9. Totalmente vale 30 aquí por cientos más tarde.
En algún lugar en bruto, Python 59
Realmente no debería haber usado un lenguaje tan bueno en un problema fácil. Además, ¿cómo es que esto no forma parte de la familia de funciones indexOf de ningún lenguaje? Parece que siempre necesito esto ...
Curry para la cena, Lisp 61
No he tocado lisp desde esa semana en la universidad ...
Spew, Bash / shell utilidades 102
Mi bash-foo nunca fue tan bueno para empezar. Voy a tocar este más tarde. Por cierto, si desea que termine más rápido, cámbielo a / dev / urandom.
Búsqueda del tesoro, C 113
Probablemente uno de los problemas más amigables de C. Interpreté "return two integers" como tomar un puntero de matriz de retorno como argumento. Advertencias? ¿Qué advertencias? Un int * es tan bueno como un FILE * = p.
Puente sobre el río Kwai, Perl 207
Empecé a aprender perl mientras escribía este. (¡Más vale tarde que nunca!) Llegué a esto con ganas de hacer expresiones heroicas de expresiones regulares, así que formo la cuerda como ambas capas del puente juntas, luego uso expresiones regulares con reemplazos de espacio para formar las dos líneas diferentes.
El tiempo vuela cuando estás jugando al golf, Java 297
Solo puede hacer mucho para hacer java conciso ... Se supone que el reloj está acolchado, por lo que cada línea tiene 5 espacios de largo.
¡Madera! Javascript 201
Se ejecuta en la consola de Chrome. No hago garantías en otra parte = p. Requiere que las líneas estén espaciadas a lo largo de la línea más larga. Siento que esta es una solicitud razonable del arte ASCII.
Slacker News, Ruby 197
fuente
Me divertí tocando algunos idiomas por un momento ...
Recuentos de caracteres obtenidos después de eliminar espacios innecesarios / líneas nuevas, pero la presentación se mantuvo en su mayoría legible. Dado que la pregunta es una mezcla de funciones y programas, incluí solo el cuerpo de la función donde se requería ... También se tomó algo de libertad con respecto al significado de "retorno" ...
Total ~ 1719
1- Python (~ 20)
2- C (~ 109)
Versión legible:
3- Javascript (~ 56)
4- Rexx (~ 136)
5- Scala (~ 290)
6- C ++ (~ 355)
7- Ir (~ 301)
Tenga en cuenta que esto requiere que el reloj esté acolchado (es decir, todas las líneas tienen la misma longitud).
8- Rubí (~ 259)
9- bash / Unix hack (~ 193)
fuente
Realmente no estoy aquí para jugar golf, pero aquí hay algo de Tcl, ya que el lenguaje necesita más amor:
En general, no se ha probado porque escribir estos procedimientos en media hora es mucho más interesante que tratar de diseñar correctamente el código de golf. ¡Disfrutar!
fuente
Solo tuve tiempo para trabajar en la mitad de estos. Parece que los quieres en forma de función y no de una sola línea. Entonces, todas estas son funciones. Código de prueba debajo de la función. En perl.
Camino verde:
Áspero:
Curry:
Arrojar:
Tesoro:
Trabajaré en 6-9 mañana.
fuente
WIP Tenga en cuenta que los recuentos de caracteres pueden estar desactivados debido a
'\n'
ywc
[1 Vía Verde] Mindf * ck, 54 caracteres
Uso: Una vez que se escribe el código, ingrese su cadena y termine su cadena con un ^ a (ctr + a), luego inmediatamente, ingrese su número.
Una advertencia: el número dado solo debe ser de 0-9 (si desea uno más grande, el valor ascii-48 de cualquier carácter que ingrese se usará como
n
)Captura de pantalla:
[3 Curry for Dinner] Javascript, 59 caracteres
[4 Spew] BASH, 56 caracteres
[7 El tiempo vuela cuando estás jugando al golf] C, 334 caracteres (412 con definición de macro)
Nota: esta función devuelve un puntero a una matriz entera bidimensional, con el siguiente formato: {3, 55} (para una posición de reloj de hora en 3, minuto en 11)
[9 Slacker News] PHP, 246 caracteres
Implementación separada / original en BASH + AWK, 218 caracteres
fuente
1654
1. Vía Verde (Haskell - 37)
2. En algún lugar en bruto (Mathematica - 43)
3. Curry para la cena (Lisp - 58)
4. Spew (Matlab / Octave - 83)
5. Búsqueda del tesoro (C - 176)
6. Puente sobre el río Kwai (Ruby - 192)
7. El tiempo vuela cuando estás jugando golf (Node.js - 406)
8. Madera! (Ir - 329)
9. Slacker News (Python - 330)
fuente
Soy un tramposo y no he jugado los 9 hoyos ... todavía . Sin embargo, aquí está mi hoyo 8, solución "Timber" en Perl (149 caracteres).
Uno de mis compañeros de trabajo presentó esto como un desafío en el trabajo. Nos hemos estado divirtiendo con él, especialmente conmigo, ¡ya que tengo la solución par más baja hasta ahora!
Nuestras reglas eran que tenía que ser un script independiente que saliera
true
ofalse
seguido por una nueva líneaSTDOUT
, y que ningún "shebang" estaba bien.A continuación se muestra la solución "minificada". También puse una " esencia " de lo mismo que incluye código no "minificado" y explicaciones (a menudo tortuosamente largas) del razonamiento detrás de mi enfoque.
fuente
Soy demasiado vago para modificarlo de acuerdo con las reglas de competencia Meh, pero funciona bien ...
fuente
Primer código de golf! (Todavía un trabajo en progreso ...)
1. Vía Verde
Idioma: Python 3.2.3
Tamaño del archivo: 23 bytes
Código:
3. Curry para cenar
Idioma: Python 3.2.3
Tamaño del archivo: 64 bytes
Código:
fuente
Otro trabajo en progreso aquí, y estoy en el trabajo, así que volveré más tarde.
Vía Verde en Ruby (14 caracteres, 24 con #alligator ), llame con
f.(c, n)
Captura de pantalla
Somewhere in the Rough en CoffeeScript (38 caracteres)
Captura de pantalla
Curry para la cena en JavaScript (54 caracteres)
Captura de pantalla
Volar en PHP (111 caracteres)
Esto requiere que
short_open_tag
el archivo de configuración de PHP esté habilitado. De lo contrario, el delimitador de apertura debería ser<?php
, los@
símbolos se usan para silenciar losPHP_NOTICE
errores que se lanzan para evitar encerrarrand
entre comillas y para no declarar explícitamente la$s
variable. Esto generará una cuadrícula cuadrada de caracteres ascii entre 4 y 30 caracteres en ambos ejes.Captura de pantalla
fuente
1. Vía verde (Python 2: 20)
Entrada de ejemplo:
a("asdf",3)
-> cadena (asdfasdfasdf
)2. En algún lugar en bruto (Python 2: 47)
Entrada de ejemplo:
b("1,2,333,4,5,6",",",3)
-> int (7)3. Curry para la cena (Javascript: 61)
Ejemplo de entrada:
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
-> inicia sesiónstring(1)
en la consola ... 3 veces.Según las especificaciones,
c
devuelve una función y en realidad no ejecuta esa función.4. Spew (C ++ 11: 171)
En realidad no probé esto, pero debería funcionar.
fuente
Se deja intacta alguna sangría para facilitar la lectura, pero se eliminó al contar caracteres. El total es de alrededor de
1227. O no, olvidé un problema.14861465 caracteres.1. MIPS ASM (55 caracteres)
2. Esquema (52 caracteres)
3. F # (39 caracteres)
4. Powershell (133 caracteres)
5. C ++ (
184152 caracteres)6. C # (
291282 caracteres)7. Haskell (
318306 caracteres)Estaba buscando una excusa para probar Haskell. Pensé que era inteligente al generar la lista de posiciones a través de combinaciones de números, pero con la cantidad de caracteres necesarios, podría haber codificado la maldita cosa. Oh bien. El código es atroz, pero fue divertido escribir de todos modos.
editar: corregido para que devuelva minutos correctamente.
8. Lua (259 caracteres)
Me sorprendió descubrir que las cadenas no admitían la indexación de estilo de matriz, por lo que tuve que confiar en sub.
9. Python (187 caracteres)
Gracias a grc / Tyroid por el acortador de URL.
fuente