Reto de 9 hoyos [cerrado]


65

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

  1. Vía Verde (24)

    f(c:string, n:integer)
    Imprime una línea que contiene ninstancias de c.

  2. En algún lugar en bruto (73)

    f(t:string, s:string, n:integer) -> i
    ¿Dónde iestá el índice de la nthinstancia de sin t.

  3. Curry para la cena (6235)

    f(x:function, y: function) -> g ¿Dónde gestá una función que llamará y, ntiempos; donde nes el valor de retorno dex

  4. Escupir (92)

    f(p:string) Escribe para archivar en py lo llena con un rectángulo de caracteres aleatorios (ascii) de tamaño aleatorio.

  5. Búsqueda del tesoro (75)

    f(p:string, c:char) -> (x, y) Lee el archivo en el pque contiene una cuadrícula de símbolos y devuelve las coordenadas xy yde la primera instancia de ese símbolo dentro de la cuadrícula, supongamos que existe.

  6. Puente sobre el río Kwai (179)

    f(l:list[int]) Imprime el diagrama de puentes de diferencia para l. 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)

  7. El tiempo vuela cuando estás jugando al golf (1157)

    f(p:string) -> [h, m] Lee el archivo pque 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.

  8. ¡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

    |__
    \\| 
      |
    
  9. 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 de sa r, luego escribe los nuevos títulos en un archivo html en p, 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

  1. @Sprigyig 1290
  2. @Firefly 1320
  3. @grc 1395
  4. @Trevor M 1465
  5. @C Gearhart 1654
  6. @Guy Sirton 1719
  7. @AsksAnyway 4651

2
@anorton <&>
Dan Prince

1
Un reloj analógico tiene 12 posiciones para cada manecilla, pero solo nos das 8. ¿Cómo funciona eso?
Kevin - Restablece a Mónica el

1
@DanPrince ¿Desea que la /posición se refiera a la 1 en punto o las 2 en punto? (y de manera similar para el resto de las diagonales)
apnorton

1
@anorton 1/5, 5/25, 7/35, 11/55
Dan Prince

2
¿Las diferentes versiones o sabores de un idioma se considerarán "diferentes" a efectos de puntuación? por ejemplo, Python 2 vs Python 3? Visual Basic vs VB.Net vs VBScript? ¿Qué hay de los superconjuntos o casi superconjuntos como C vs C ++? Perdón por la pedantería, ¡pero esto es código golf! :-)
Darren Stone

Respuestas:


11

Puntuación: 4651

2907 + 60% de penalización

1. GolfScript - 14 caracteres

{*}:a;lligator

Uso: c n apor ejemplo "test" 3 a->testtesttest

estrella Feliz gilmoore

2. Python - 72 caracteres

def f(t,s,n,p=-1):
 while n:p=t.find(s,p+1);n-=1 if p+1 else n
 return p

3. Javascript - 255 caracteres

/*
Curry for Dinner

f(x:function, y: function) -> g Where g is a function that will call y, n times; where n is the return value of x
*/
function f(x, y) {
    var g = function() {
        var n = x();
        for (var i = 0; i < n; ++i) {
            y();
        }
    };
    return g;
}

estrellaBunker estrellaGood Parts

4. Python - 132 caracteres

from random import randrange as r
def f(p):l=range(r(9));open(p,'w').writelines([''.join([chr(r(94)+33)for _ in l])+'\n'for _ in l])

5. Python - 89 caracteres

def f(p,c):
 for y,d in enumerate(open(p).readlines()):
  x=d.find(c)
  if x+1:return x,y

6. Python - 189 caracteres

def f(l):
 for i in 0,1:
  for n,u in enumerate(l):
   o=l[n+1] if len(l)>n+1 else id 
   if i:print u,' '*4,
   elif o!=id:print' /'+('+' if o-u>0 else '')+str(o-u)+'sers'*0+'\\ ',
  print

7. Python - 1727 caracteres

def f(p):
    lines = open(p).read().split('\n')

    # preprocess lines to ensure correct format
    if len(lines) < 5:
        for i, line in enumerate(list(lines)):
            if 'o' in line:
                if i == 0:
                    lines.insert(0, ' ' * 5)
                    lines.insert(0, ' ' * 5)
                elif i == 1:
                    lines.insert(0, ' ' * 5)
        while len(lines) < 5:
            lines.append(' ' * 5)

    # find characters that can only be the hour hand
    for i, line in enumerate(lines):
        if i == 0:
            if '\\' in line:
               hour = 11
            elif '|' in line:
                hour = 12
            elif '/' in line:
                hour = 1
        elif i == 2:
            if '--o' in line:
                hour = 9
            elif 'o--' in line:
                hour = 3
        elif i == 4:
            if '/' in line:
               hour = 7
            elif '|' in line:
                hour = 6
            elif '\\' in line:
                hour = 5

    # find characters that might represent the minute hand
    possible_minutes = []
    for i, line in enumerate(lines):
        if i == 1:
            if '\\' in line:
                possible_minutes.append(55)
            if '|' in line:
                possible_minutes.append(0)
            if '/' in line:
                possible_minutes.append(5)
        elif i == 2:
            if '-o' in line:
                possible_minutes.append(45)
            if 'o-' in line:
                possible_minutes.append(15)
        elif i == 3:
            if '/' in line:
                possible_minutes.append(35)
            if '|' in line:
                possible_minutes.append(30)
            if '\\' in line:
                possible_minutes.append(25)

    HOUR_MINUTES = {
        12: 0,
        1: 5,
        3: 15,
        5: 25,
        6: 30,
        7: 35,
        9: 45,
        11: 55,
    }

    # remove minute hand that is actually hour hand
    if len(possible_minutes) > 1:
        not_minute = HOUR_MINUTES[hour]
        if not_minute in possible_minutes:
            possible_minutes.remove(not_minute)

    assert(len(possible_minutes) == 1)
    minute = possible_minutes[0]

    h, m = hour, minute          
    return [h, m]

estrella Serpientes en un avión

8. Python - 226 caracteres

def f(p):
 e=set;q,t=e(),True
 for l in open(p).readlines():
  r,b,q=e(q),e(),e()
  for i,c in enumerate(l):
   if c.strip():b.add(i);q.add(i-1 if c == '/' else i+1 if c == '\\' else i)
  if not r.issubset(b):t=False
 return t

9. Python - 203 caracteres

import urllib
def f(s,r,p):f,l,g=open(p,'w'),'\74','\76';[f.write(l+'h1'+g+t.replace(s,r)+'h1'+g)for i,t in enumerate(urllib.urlopen('http://x.co/3WYln').read().split('title'+g))if(i in range(2,42))&i%2]

¿Qué tiene que ver el comentario "#alligator" con el código # 1? Parece estar incluido en el conteo de palabras por alguna razón.
Dhara

1
@Dhara Es para el trofeo Happy Gilmoore: "La solución más corta que tiene la palabra 'cocodrilo' en el código".
PhiNotPi

# 9 usa llaves angulares ( i<i<42), ¿o están permitidas siempre que solo las use como operadores?
Christopher Creutzig

@ChristopherCreutzig Corregido gracias.
Pregunta de cualquier manera el

7

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)

def f(c,n):print(c*n)

La solución "obvia".

2. ECMAScript 6 (47 caracteres)

f=(t,s,n)=>t.split(s).slice(0,n).join(s).length

Encuentra el índice de una manera poco convencional, contando la longitud de la subcadena anterior.

3. J (12 caracteres)

f=:2 :'v^:u'

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 correcta f=:^:.

4. C (95 caracteres)

#include <stdio.h>
#include <stdlib.h>

f(char*p){FILE*f=fopen(p,"a");for(int n=rand(),y=n*n;y--;y%n||putc(10,f))putc(rand()%94+32,f);}

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 %9algo 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 agregar fflush(f);al conteo aquí.

5. Haskell (100 caracteres)

import Control.Arrow
import Data.List
import Data.Tuple
import Control.Applicative

h p c=head.filter(p c.snd).zip[1..]
g c=swap.(id***fst.h(==)c).h elem c.lines
f p c=g c<$>readFile p

Me gusta el patrón repetido entre encontrar la fila y la columna (abstraído a través de h).

6. Lua (261 caracteres)

function f(s,m,y,...)if s and m then for i,v in pairs(m)do
io.write(v,(" "):rep(#tostring(s[i])))end print()elseif s then
r=unpack f(s,{"",f(trouse,r(s))})f({f(nil,r(s))},s)elseif y then
return ("/%s%d\\"):format(m<y and"+"or"-",math.abs(m-y)),f(s,y,...)end end

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)

func f(p string)[]int{var l[]string
g,_:=os.Open(p)
H,M,s,m:=0,0,bufio.NewScanner(g),[][]int{{-1,-1,11},{-1,0,12},{-1,1,1},{0,-1,9},{0,1,3},{1,-1,7},{1,0,6},{1,1,5}}
for s.Scan(){l=append(l,s.Text())}
for _,a:=range m{if l[2+a[0]*2][2+a[1]*2]!=' '{M=a[2]}
if l[2+a[0]][2+a[1]]!=' '&&(H==0||M!=a[2]){H=a[2]}}
return[]int{H,M}}

Probablemente podría jugar mucho más al golf; Apenas sé Go.

8. CoffeeScript (+ node.js) (223 caracteres)

f=(p)->
 a=require('fs').readFileSync(p).toString().split "\n"
 U=(i,j)->a[i]?[j]and a[i][j]==' '
 for l,i in a
  for c,j in l
   m =
    "/":[i+1,j-1]
    "\\":[i+1,j+1]
    a:[i+1,j]
   return if U.apply(0,m[c]or m.a)
 1

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)

f(){
curl https://news.ycombinator.com/rss|
awk -Ftitle '{OFS="h1\76\n\74h1";ORS="";print substr(OFS,4);print$2,$4,$6,$8,$10,$12,$14,$16,$18,$20,$22,$24,$26,$28,$30,$32,$34,$36,$38,$40;print substr(OFS,0,3)}'|
while read l;do echo ${l//$1/$2};done|
tee $3
}

(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.


1
¿Hay alguna razón por la que no ha incluido importaciones / incluye en el recuento de caracteres? De lo contrario, ¡buen trabajo!
grc

1
Oh sí, olvidé mencionar eso. Como la pregunta enfatiza que "solo necesita enviar la función", pensé que sería justo ignorar el costo de incluir bibliotecas estándar.
FireFly

Para el hoyo 1f=str.__mul__
Serpientes y café

@SnakesandCoffee que no lo imprime en stdout, desafortunadamente. :(
FireFly

5

Puntuación: 1.394,4

996 caracteres + 40% de penalización

1. Vía Verde - Haskell, 19 caracteres

f c n=replicate n c

Uso:

> f "hello" 5
["hello","hello","hello","hello","hello"]

2. Áspero - PHP, 72 caracteres

<?
function f($t,$s,$n){for($i=-1;$n--;$i=strpos($t,$s,++$i));return$i;}

3. Curry - JavaScript 1.8, 45 caracteres

f=function(x,y)function(){for(i=x();i--;)y()}

4. Spew - J, 43 caracteres

f=:3 :'((33+?(1+?2#100)$1#93){a.)fwrites y'

Uso:

f 'file.txt'

5. Tesoro - J, 64 caracteres

f=:4 :0
a=.freads x
b=.1+a i.u:10
c=.a i.y
d=.<.c%b
e=.d,c-b*d
)

Uso:

'file.txt' f 'c'

6. Puente - Python, 166 caracteres

def f(l):J=''.join;t=map;r=lambda n:' '*len(n);s=t(str,l);o=['/%+d\\'%(y-x)for x,y in zip(l,l[1:])];print J(t(J,zip(t(r,s),o)))+'\n'+J(t(J,zip(s,t(r,o)+['users'*0])))

7. Tiempo - Python, 205 caracteres

def f(p):
 s=open(p).read();a=[s[:12],s[18:],s[11:15],s[15:18]];z=[0]*3
 for l in(0,1):
  for c in'/|\\':z[a[l].count(c)]=('|/'.find(c)+6*l)%12or 12
  z[a[2+l].count('-')]=3+6*l
 print[z[1]or z[2],z[2]*5%60]

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

def f(p):g=open(p).readlines();C='\\/ ';return all(1-[x+2>len(g[y])or g[y][x+1]in C,x<1or g[y][x-1]in C,0,' '==g[y+1][x]][C.find(g[y][x])]for y in range(len(g)-1)for x in range(len(g[y])-1))

9. Slacker - Python, 192 caracteres

import urllib
def f(s,r,p):F=open(p,'w');d=urllib.urlopen('http://x.co/3WYmQ').read()[37:];o,c='\x3c\x3e';exec"d=d[d.find(o+'t')+7:];F.write(o+'h1'+c+d[:d.find(o)].replace(s,r)+o+'/h1'+c);"*20

Gracias a Tyzoid por la idea de acortador de URL.


Muy impresionado con su Python, muchos trucos para aprender.
Pregunta

1
@AsksAnyway Gracias. Asegúrese de revisar esto si aún no lo ha hecho.
grc

1
Umm, seguramente tu (1) está en J, ¿no? Tal vez olvidó actualizar el encabezado / muestra de ejecución.
FireFly

@FireFly Sí, mi error. Actualicé el puntaje y el uso, pero olvidé cambiar la solución real.
grc

4

Editar: creo que enviaré esto como está: 1290 en total, no se repite el idioma.

Vía Verde, C # 53

void g(string s,int n){while(n-->0)Console.Write(s);}

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 ...

def f(t,s,n):return sum(map(len,t.split(s))[:n+1])+n*len(s)

Curry para la cena, Lisp 61

No he tocado lisp desde esa semana en la universidad ...

(defun f (c g)(loop for i from 1 to(funcall c)do(funcall g)))

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.

f(){
c=$(($RANDOM%9+9))
for i in $(seq $c);do
echo `tr -cd [:print:]</dev/random|head -c$c`>>$1
done
}

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.

void f(int*p,int c,int*r){int*f,t;*r=r[1]=0;f=fopen(p,"r");while(c-(t=fgetc(f))){*r=t-'\n'?*r+1:0;r[1]+=*r?0:1;}

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.

sub f{@trouse=0..$#_-1;foreach $i(@trouse){$r.=sprintf("%d/%+d\\",$_[$i],$_[$i+1]-$_[$i])}$r.=$_[$#_]."\n";print$r=~s/(^|\\)(\d+)(\/|$)/$1.' 'x length($2).$3/egr;print$r=~s/(\/[+-]\d+\\)/' 'x length($1)/egr}

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.

public boolean p(int r,int m,String s){int c[]={1,1,0,-1,-1,-1,0,1};return s.charAt(6*c[(r+6)%8]*m+14+c[(r)%8]*m)!=' ';}
public int[]time(String c){int h=9,m=0,t[]={3,5,6,7,9,11,12,1};for(int i=0;i<8;i++)if(p(i,1,c))if(p(i,2,c))m=i;else h=i;if(h==9)h=m;m=(t[m]*5)%60;h=t[h];return new int[]{h,m};}

¡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.

function f(s) {s=s.split("\n")
d={};m={'/':-1,'\\':1};r=1
s.forEach(function(x){t={}
for(i=0;i<x.length;i++){if(x[i]!=' '){j=m[x[i]]?i+m[x[i]]:i
t[j]=1}}for(n in d){if(x[n]==' '){r=0}}d = t})
return r}

Slacker News, Ruby 197

def s(f,s,t)
l=60.chr
r=62.chr
IO.write(f,l+"h1"+r+URI.parse("https://news.ycombinator.com").read().split('mhead')[0,20].map{|x|x[0,x.length-19].split(r).last.sub(s,t)}.join(l+"/h1#{r+l}h1"+r))
end

No solo es una gran respuesta, sino que también es una excelente lectura. ¡Buen trabajo!
Dan Prince

Gracias, imagino que es un poco menos interesante ahora que cambié Ruby y C #. No más despotricar en la división de cadena loca de .Net =)
Sprigyig

4

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)

def f(c, n):
    print c*n

2- C (~ 109)

int f(char*t,char*s,int n){int i;char*q=t;int l=strlen(s);for(i=0;i<n;++i){t=strstr(t, s)+l;}return(t-q-l);}

Versión legible:

#include <string.h>

int f(const char *t, const char *s, int n)
{
  int i;
  char *start = t;
  int l = strlen(s);
  for(i = 0; i < n; ++i)
  {
    t = strstr(t, s) + l;
  }
  return(t - start - l);
}

3- Javascript (~ 56)

function(x, y) {return function() {for(i=0; i<x(); i++) y();}}

4- Rexx (~ 136)

f: Procedure
  Parse arg p
  w = random(1, 9)
  h = random(1, 9)
  Do y = 1 to h
    Do x = 1 to w
      Call CHAROUT p, d2c(random(32, 99))
    End
    Call LINEOUT p, ""
  End

5- Scala (~ 290)

def f(p: String, c: Char) {
  def sc(w: String, c: Char, x: Int, y:Int ): Boolean =
    {
      if(w.isEmpty) false else
      if(w.head==c) {println(x, y); true} else sc(w.tail, c, x+1, y)
    }
  def sr(w: Array[String], c: Char, x: Int, y: Int)
  {
    if(!sc(w.head, c, 0, y)) sr(w.tail, c, 0, y+1)
  }
  sr(io.Source.fromFile(p).mkString.split('\n'), c, 0, 0)
}

6- C ++ (~ 355)

void b(list<int> l) // trouser+s
{
  auto i = l.begin();
  auto j = i;
  j++;
  list<int> d;
  while(j!=s.end()) d.push_back(*j++ - *i++);
  j = d.begin();
  ostringstream o[2];
  for(auto i : l)
  {
    while(o[0].tellp()!=o[1].tellp()) o[1] << " ";
    o[1] << i;
    if(j != d.end())
    {
      while(o[0].tellp()!=o[1].tellp()) o[0] << " ";
      o[0] << "/" << (*j>=0 ? "+" : "") << *j++ << "\\";
    }
  }
  cout << o[0].str() << endl << o[1].str() << endl;
}

7- Ir (~ 301)

Tenga en cuenta que esto requiere que el reloj esté acolchado (es decir, todas las líneas tienen la misma longitud).

func f(p string)(h int,m int) {
  var a=[8]int {0, 2, 4, 12, 16, 24, 26, 28}
  var b=[8]int {7, 8, 9, 13, 15, 19, 20, 21}
  var d=[8]int {11, 12, 1, 9, 3, 7, 6, 5}
  h=9
  c, e := ioutil.ReadFile(p)
  if e==nil {
    for i:=range a {
      if c[a[i]]>32 {
        m=i
      }
    }
    for i:= range b {
      if c[b[i]]>32 {
        if i!=m {
          h=i
        }
      }
    }
    if h==9 {
      h=m
    }
    h=d[h]
    m=d[m]*5%60
  }
  return
}

8- Rubí (~ 259)

def f(p)
  a,b = File.read(p).split(/\n/).reverse,Hash.new(1)
  a.each_with_index {
    |l,i|
    l.split("").each_with_index {|k,j|
      case k
        when ' '
          b[j] = 0
        when '/'
          b[j] = b[j]|b[j-1]
        when '\\'
           b[j] = b[j]|b[j+1]
      end
      unless k==' '
        if b[j]==0
          return 0
        end
      end
    }
  }
  return 1
end

9- bash / Unix hack (~ 193)

wget -qO - http://news.ycombinator.com/rss | tr "\074\076" "\n" | grep -B1 /title | awk 'NR % 3 == 1' | head -21 | tail -20 | sed 's/$1/$2/' | awk '{ print "\074h1\076" $0 "\074/h1\076"}' > $3

1
Bien, pero tu # 9 usa llaves angulares, lo que va en contra de las reglas para ese hoyo.
Rik Smith-Unna

@ RichardSmith: Gracias ... tendré que arreglar eso.
Guy Sirton

1
¡Cuidado en el hoyo # 3, no hay garantía de que x () devuelva el mismo número en cada llamada de función!
Tyzoid

@Tyzoid: Estaba considerando capturarlo ... Tienes razón, esa es mi suposición / interpretación de la especificación.
Guy Sirton

2

Realmente no estoy aquí para jugar golf, pero aquí hay algo de Tcl, ya que el lenguaje necesita más amor:

set holes {
    greenway
    rough
    curry
    spew
    hunt
    bridge
    time
    timber
    slacker
}

proc greenway {c n} {
    puts [string repeat $c $n]
}

proc rough {t s n} {
    set i [string first $s $t] ;# a bit wet
    while {[incr n -1]} {
        incr i [string first $s $t $i]
    }
    return $i
}

proc curry {x y} {
    set n [uplevel 1 $x]
    set body [string repeat "$y;" $n]
    return [list apply [list args $body]]
}

proc spew {p} {
    set w [expr {int(rand()*80)}]
    set h [expr {int(rand()*80)}]
    set f [open $p w]
    for {set y 0} {$y<$h} {incr y} {
        set ln ""
        for {set x 0} {$x<$h} {incr x} {
            append ln [format %c [expr {int(rand()*96+32)}]]
        }
        puts $f $ln
    }
    close $f
}

proc hunt {p c} {
    set f [open $p r]
    set y 0
    while {[gets $f line]>=0} {
        set x [string first $f $c]
        if {$x != -1} {
            return [list $x $y]
        }
        incr y
    }
}

proc bridge {l} {
    set l [lassign $l m]
    set top ""
    set btm $m
    foreach n $l {
        set t "/[expr {$n>$m?"+":""}][expr {$n-$m}]\\"
        append top "[string repeat \  [string length $m]]$t"
        append btm "[string repeat \  [string length $t]]$n"
        set m $n
    }
    # trousers
    return $top\n$btm
}

proc time {p} {
    set f [open $p r]
    while {[gets $f line] >= 0} {
        set line [format %-.5s $line]
        lappend c [split $line {}]
    }
    close $f
    foreach {x y h} {
        -1 -1  0
         0 -1  1
         1 -1  3
         1  0  5
         1  1  6
         0  1  7
        -1  1  9
        -1  0 11
    } { 
        set 2x x; incr 2x $x
        set 2y y; incr 2y $y
        if {[lindex $c $2y $2x] != " "} {
            set hh $h
        } elseif {[lindex $c $y $x] != " "} {
            set mm $h
        }
    }
    if {![info exists $mm]} {
        set mm $hh
    }
    set mm [expr {$mm*5}]
    if {$hh == 0} {set hh 12}
    list $hh $mm
}

proc timber {p} {
    set f [open $p r]
    set must {}
    while {[gets $f line] >= 0} {
        set line [format %-.5s $line]
        foreach i $must {
            if {[string index $line $must] eq " "} {
                close $f
                return false
            }
        }
        set must {}
        set i 0
        foreach c [split $line] {
            switch $c {
                "\\" {lappend must [expr {$i+1}]}
                "/"  {lappend must [expr {$i-1}]}
                " "  { }
                default  {lappend $must $i}
            }
            incr i
        }
    }
    close $f
    return true
}

proc slacker {s r p} {
    package require tdom
    set f [open $p w]
    set h [::http::geturl https://news.ycombinator.com/]
    set html [string trim [::http::data $h]]
    ::http::cleanup $h
    set dom [dom parse $html]
    lappend map , [string index $html 0]
    lappend map . [string index $html end]
    set root [$dom documentElement]
    foreach n [$root selectNodes {//td[@class=title]/a}] {
        set x [$n text]
        set x [string map [list $s $r] $x]
        puts $f [string map $map ",h1.$x,/h1."]
    }
    close $f
}

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!


2

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:

sub f{print$_[0]x$_[1]}

#test
&f("abc",5);

Áspero:

sub f{$i=-1;$n=$_[2];do{$i=index$_[0],$_[1],$i+1;$n--}while($n>0 && $i>-1);print$i+1}

#test
&f("abcefgacefgabcefgabcefgabcefg","cef",4);

Curry:

use Sub::Curried;
curry f($x,$y){$q=0;foreach(1..&$x){$q=&$y};return $q;}

#test
sub fy { return 1;}
sub fx { return 10;}
print&f(\&fx,\&fy);

Arrojar:

use Crypt::PRNG qw(random_string_from irand);
sub f{open($o,">$_[0]");$m=(irand)%10+1;map{printf $o "%s\n",random_string_from(['A'..'z'],$m)}(1..$m)}

#test
&f('/tmp/t');

Tesoro:

sub f{open($i,"<$_[0]");$x=$y=0;@l=<$i>;while($y<=$#l){$x=1+index$l[$#l-$y],$_[1];@a=($x,$y+1)if($x);$y++;}return\@a}

#test
@b=@{&f('/tmp/t','f')};
print join(",",@b);

Trabajaré en 6-9 mañana.


2

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:

Captura de pantalla

[3 Curry for Dinner] Javascript, 59 caracteres

function f(x,y){return function(){n=x();while(--n!=0)y();}}

[4 Spew] BASH, 56 caracteres

f(){ dd if=/dev/urandom of="$1" count=$((RANDOM%30+2));}

[7 El tiempo vuela cuando estás jugando al golf] C, 334 caracteres (412 con definición de macro)

#define E(A) else if(s[A]==
#define G(A) else if(A)m=
#define M(A) &&m!=A)h=A
int (*f(char* s)){short h=0,m=0;if(s[0]=='\\')m=11;G(s[2]=='|')12;G(s[4]='/')1;G(s[11]=='-')9;G(s[15]=='-')3;G(s[22]=='/')7;G(s[24]=='|')6;G(s[26]=='\\')5;if(s[7]=='\\'M(11);E(8)'|'M(12);E(9)'/'M(1);E(12)'-'    M(9);E(14)'-'M(3);E(18)'/'M(7);E(19)'|'M(6);E(20)'\\'M(5);int* i=malloc(sizeof(int)*2);i[0]=(h==0)?m:h;i[1]=m*5;return i;}

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

function f($a,$b,$c){$t=file_get_contents("http://x.co/3WQoY");$g=explode('d class="t',$t);$f=fopen($c,"w");for($i=1;++$i!=count($g)-10;){$e=explode("\x3e",$g[$i]);fwrite($f,"\x3ch1\x3e".str_replace($a,$b,s    ubstr($e[2],0,-3))."\x3c/h1\x3e\n");}}

Implementación separada / original en BASH + AWK, 218 caracteres

f(){ wget -qO- x.co/3WQoY|grep "e_"|awk '{n=split($0,a,"d class=\"t");for(q=1;++q!=n-10;){split(a[q],b,"\x3e");m=substr(b[3],0,index(b[3],"\x3c/")-1);gsub("'"$1\",\"$2"'",m);print "\x3ch1\x3e"m"\x3c/h1\x3e"    }}'>"$3";};

2

1654

1. Vía Verde (Haskell - 37)

f x y=do print(concat(replicate x y))

2. En algún lugar en bruto (Mathematica - 43)

f[t_,s_,n_]:=StringPosition[t, s][[n+1, 1]]

3. Curry para la cena (Lisp - 58)

(defun f(x y)(lambda()(dotimes(c(funcall x))(funcall y))))

4. Spew (Matlab / Octave - 83)

function x(f)
    save f arrayfun(@char,randi(255,randi(255),randi(255)))
endfunction

5. Búsqueda del tesoro (C - 176)

char* f(char* s,char c){FILE* n;char* r;int i=0,j=0,k=0;n=fopen(s,"r");while(!feof(n)){k=fgetc(n);if(k==(int)c)break;j++;if(k=='\n'){i++;j=0;}}sprintf(r,"%d %d",i,j);return r;}

6. Puente sobre el río Kwai (Ruby - 192)

def f(l)
    trouse="\n%s"
    rs = l[0].to_s
    for i in 1..l.length-1
        s = "/%+d\\"%(l[i]-l[i-1])
        print " "*l[i-1].to_s().length+s
        rs += " "*s.length+"%d"%l[i]
    end
    puts trouse%rs
end

7. El tiempo vuela cuando estás jugando golf (Node.js - 406)

function f(n){var g,h,m,q;fs.readFile(n,'ascii',function(e,d){l=d.split('\n');g=function(x,y){try{return l[x][y].trim()&&1;}catch(e){return 0;}};h=g(0,0)*11||g(0,2)*12||g(0,4)*1||g(2,0)*9||g(2,4)*3||g(4,0)*7||g(4,2)*6||g(4,4)*5;m=(g(1,1)&&h!=11)*55||(g(1,2)&&h!=12)*0||(g(1,3)&&h!=1)*5||(g(2,1)&&h!=9)*45||(g(2,3)&&h!=3)*15||(g(3,1)&&h!=7)*35||(g(3,2)&&h!=6)*30||(g(3,3)&&h!=5)*25||h*5%60;return [h,m];});}

8. Madera! (Ir - 329)

func f(p string)bool{
    x,_:=ioutil.ReadFile(p)
    b:=strings.Split(string(x),"\n")
    for j:=0;j<len(b)-2;j++{
        for i:=0;i<len(b[j]);i++{
            r,o:=1,0
            switch string(b[j][i]){
            case " ": continue
            case "/": r,o=0,-1
            case "\\": r,o=0,1
            }
            if i+o<len(b[j]) && b[j+r][i+o]==' ' {
                return false
            }
        }
    }
    return true
}

9. Slacker News (Python - 330)

def f(s,r,p):
    w=urllib2.urlopen('http://news.ycombinator.com')
    a=[l.get_text() for l in BS(w).body("a") if l.find_parent("td", class_="title")]
    t=lambda x:u"\x3c{}\x3e{}\x3c/{}\x3e".format(x,'{}',x)
    m=''.join(t("h1").format(l.replace(s,r)) for l in a[:20])
    with open(p,'w') as h:
        h.write(t("html").format(m).encode('utf8'))

1

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 trueo falseseguido por una nueva línea STDOUT, 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.


$r=tru;open F,pop;while(<F>){y/0/6/;s/^|\s|$/0/g;s#\\(?=0)|(?<=0)/|[^\\/0]#6#g;@n=split//;for(0..@n){!$n[$_]&&$l[$_]==6?$r=fals:1}@l=@n;}print$r,'e
'

0

Soy demasiado vago para modificarlo de acuerdo con las reglas de competencia Meh, pero funciona bien ...

from numpy import *
import sys

def greenway(c,n):
    print c*n

def somewhereintherough(t,s,n):
    i=-1
    count=0
    while(count<n):
        i = t.find(s,i+1)
        count+=1
    return i

def curryfordinner(x,y):
    def g():
        for i in range(x()):
            y()
    return g

def spew(p):
    f = open(p,'w')
    n = random.randint(1,28)  
    for i in range(n):
        if(i>0):
            f.write('\n')
        str1 = ''.join([chr(random.randint(32,126)) for _ in range(n)])
        f.writelines(str1)
    f.close()
    print "Grid size: ",n,'x',n

def treasurehunt(p,c):
    f = open(p,'r')    
    arr = f.readlines()
    n = len(arr)
    f.close()
    f = open(p,'r')
    found=False
    for i in range(n):
        line = f.readline()
        #print line
        loc = line.find(c)
        if(loc!=-1):
            print c,"found in",p,"at",i,loc
            found=True
            break
    if(not found):
        print c,"not in",p
    f.close()

def bridgeontheriverkwai(l):
    str_list = []
    for i in range(len(l)-1):
        sign = '+' if l[i+1]-l[i]>0 else '-'
        str_1 = '/'+sign+str(abs(l[i+1]-l[i]))+'\\'
        sys.stdout.write(' '*(len(str(l[i])))+str_1)
        str_list.append(str_1)
    print
    for i in range(len(l)):
        if i<len(l)-1:
            print str(l[i])+' '*(len(str_list[i])-1),
        else:
            print l[i]

def timeflieswhenyoureplayinggolf(p):
    f = open(p,'r')
    #clock = [[0]*5,[0]*5,[0]*5,[0]*5,[0]*5]
    line1 = f.readline()
    line2 = f.readline()
    line3 = f.readline()
    line4 = f.readline()
    line5 = f.readline()
    h = 0
    m = 0
    if line1.find('\\')!=-1:
        h = 11
        m = 55
    elif line1.find('|')!=-1:
        h = 12
        m = 0
    elif line1.find('/')!=-1:
        h = 1
        m = 5
    elif line5.find('/')!=-1:
        h = 7
        m = 35
    elif line5.find('|')!=-1:
        h = 6
        m = 30
    elif line5.find('\\')!=-1:
        h = 5
        m = 25
    elif line3[4]=='-':
        h = 3
        m = 15
    elif line3[0]=='-':
        h = 9
        m = 45

    if line2[1]=='\\' and h!=11:
        m = 55
    elif line2[3]=='/' and h!=1:
        m = 5
    elif line3[1]=='-' and h!=9:
        m = 45
    elif line3[3]=='-' and h!=3:
        m = 15
    elif line4[1]=='/' and h!=7:
        m = 35
    elif line4[3]=='\\' and h!=5:
        m = 25
    elif line2[2]=='|' and h!=12:
        m = 0
    elif line4[2]=='|' and h!=6:
        m = 30

    print h,m


def timber(p):
    f = open(p,'r')
    linecount=0
    line_size = 0
    line = f.readline()
    while(line):
        linecount+=1
        line_size = max(line_size,len(line)-1)
        line = f.readline()
    block = array([[0]*line_size]*linecount)
    f.seek(0)
    for i in range(linecount):
        line = f.readline()
        for j in range(len(line)-1):
            if(line[j]==' '):
                block[i][j]=0
            elif(line[j]=='/'):
                block[i][j]=1
            elif(line[j]=='\\'):
                block[i][j]=2
            else:
                block[i][j]=3
    f.close()
    for i in range(linecount):
        for j in range(line_size):
            if(block[i][j]==1 and j!=0 and block[i][j-1]==3):
                block[i][j]=4
        for j in range(line_size-1,0,-1):
            if(block[i][j]==2 and j!=line_size-1 and block[i][j+1]==3):
                block[i][j]=4
    for i in range(linecount):
        for j in range(line_size):
            if(block[i][j]==3 and i<linecount-1 and block[i+1][j]==0):
                print "Unsafe Structure"
                return
    print "Safe Structure"

def slackernews(s,r,p):
    import urllib2
    response = urllib2.urlopen('https://news.ycombinator.com')
    html = response.read()
    titles_list = []
    ix = -1
    count = 0
    index_list =  []
    while(count<21):
        ix = html.find("<td class=\"title\"",ix+1)
        index_list.append(ix)
        count+=1
    for i in range(len(index_list)-1):
        line = html[index_list[i]:index_list[i+1]]
        line = line[line.find("a href"):]
        start = line.find('>')
        end = line.find('<')
        titles_list.append(line[start+1:end])
    f = open(p,'w')
    for title in titles_list:
        title = title.replace(s,r)
        f.write('<h1>'+title+'</h1>')
    print "Done writing, Check : ",p
    f.close()


greenway('test!',2)
s='this is a cat. this is a dog. dog is an animal, animal is a beast in disguise.'
t='is'
ix=somewhereintherough(s,t,8)
print ix,s[ix:]
def x():
    return 4
def y():
    print ' !y_called! '
g = curryfordinner(x,y)
g()
spew('test.dat')
treasurehunt('test.dat','a')
bridgeontheriverkwai([-7,-22,6,9])
timeflieswhenyoureplayinggolf('clock.dat')
timber('block.dat')
slackernews('a','b','slacker.html')

0

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:

def f(c,n): print(c*n)

3. Curry para cenar

Idioma: Python 3.2.3
Tamaño del archivo: 64 bytes
Código:

def f(x,y):
    def g():
        for i in [1]*x(): y()
    return g

Se le acoplarán puntos por usar el mismo idioma dos veces, si lo entendí correctamente. Si solo lo haces por diversión, no hay problema.
Hosch250

@ user2509848 No sé 9 idiomas aptos para el golf, así que tendré que acoplar algunos. :( ¡Sin embargo, gracias por el
aviso

Ruby, Perl, Golfscript y Mathematica son a menudo ganadores
Hosch250

Solo conozco C ++, con algo de Java y menos Python 3.2.3. Nada más que HTML y CSS (que no se puede usar de todos modos (CSS)).
Hosch250

0

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 conf.(c, n)

f=->c,n{p c*n}#alligator

Captura de pantalla

Camino verde

Somewhere in the Rough en CoffeeScript (38 caracteres)

f=(t,s,n)->t.split(s,n).join(s).length

Captura de pantalla

En algún lugar en bruto

Curry para la cena en JavaScript (54 caracteres)

f=function(x,y){return function(){for(i=x();i--;)y()}}

Captura de pantalla

Curry para cenar

Volar en PHP (111 caracteres)

Esto requiere que short_open_tagel 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 los PHP_NOTICEerrores que se lanzan para evitar encerrar randentre comillas y para no declarar explícitamente la $svariable. Esto generará una cuadrícula cuadrada de caracteres ascii entre 4 y 30 caracteres en ambos ejes.

<? @$r=rand;$x=$r(4,30);for($i=$x*$x;--$i;){@$s.=$i%$x!=0?chr($r(33,126)):"\n";}file_put_contents($argv[1],$s);

Captura de pantalla

Arrojar


¿Cuál es esa terminal que estás usando?
Alexander Craggs

0

1. Vía verde (Python 2: 20)

def a(x,n):print x*n

Entrada de ejemplo: a("asdf",3)-> cadena ( asdfasdfasdf)

2. En algún lugar en bruto (Python 2: 47)

def b(t,s,n):return len(s.join(t.split(s)[:n]))

Entrada de ejemplo: b("1,2,333,4,5,6",",",3)-> int (7)

3. Curry para la cena (Javascript: 61)

function c(a,b){d=a();return function(){while(d){d--;b()}};};

Ejemplo de entrada: function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();-> inicia sesión string(1)en la consola ... 3 veces.

Según las especificaciones, cdevuelve una función y en realidad no ejecuta esa función.

4. Spew (C ++ 11: 171)

#include<fstream>
using namespace std;void d(string f){ofstream o;int i=rand()%10;int j=rand()%10;o.open(f);for(int x=0;x<i;x++){for(int y=0;y<j;y++){o.put(rand()%256);}}}

En realidad no probé esto, pero debería funcionar.


0

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. 1486 1465 caracteres.

1. MIPS ASM (55 caracteres)

#a0 : the address of the null terminated string.
#a1 : the repetition count.
f:
li $v0,4
syscall
addi $a1,$a1,-1
bne $a1,$0,f
jr $ra

2. Esquema (52 caracteres)

(define (f t s n)(list-ref(string-search-all s t)n))

3. F # (39 caracteres)

let f x y=fun()->for i in 1..x() do y()

4. Powershell (133 caracteres)

Function f($p){
$r=(Get-Random)%100
$z="";for($b=$r*$r;$b -gt 0;$b--){$z+=[char](33+(Get-Random)%94);if($b%$r -eq 1){"$z">>$p;$z=""}}
}

5. C ++ ( 184 152 caracteres)

#include <istream>
#include <string>
int*f(std::string p,char c){int*x=new int[2]();std::ifstream i(p);for(;i>>p;x[1]++)if((x[0]=p.find(c))>0)return x;}

6. C # ( 291 282 caracteres)

static void f(List<int> l)
{
    var z = "";
    var o = l[0].ToString();
    for (int j = 1; j < l.Count;j++)
    {
        int p = l[j-1];
        int i = l[j];
        var q = "/"+(i-p<0?"":"+")+(i-p).ToString()+"\\";
        o += new String(' ',q.Length)+i.ToString();
        z+=new String(' ',p.ToString().Length)+q;
    }
    Console.Out.Write(z+"\n"+o);
}

7. Haskell ( 318 306 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.

w i s=[s!!(j!!1)!!(j!!0)/=' '|j<-mapM(const i)[1,2],j/=[2,2]]
k[e,r](i,o,n)|i&&o=[e, n]|i&&not o=[n, r]|not$o||i=[e, r]
g s=let[h,m]=foldl k[0,0](zipWith3(\x y z->(x,y,z))(w[1,2,3]s)(w[0,2,4]s)[11,9,7,12,6,1,3,5])in let u=mod(m*5)60 in if h==0 then[m,u]else[h,u]
f p = do
  s<-readFile p
  return$g$lines s

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.

function f (p)
    s=' ' g=''
    for l in io.open(p):lines() do l=l..s:rep(#g-#l) for v=1,#g do
        d=({['/']=v-1,['\\']=v+1,[s]=0})[g:sub(v,v)] or -1
        if l:sub(v,v)==s and (d<0 or d>0 and g:sub(d,d)==s and l:sub(d,d)==s) then
            return false
        end
    end g=l end
    return true
end

9. Python (187 caracteres)

Gracias a grc / Tyroid por el acortador de URL.

import urllib2
def f(s,r,p):[open(p,'a').write('\074h1\076'+i.split("\074")[0].replace(s,r)+'\074/h1\076') for i in urllib2.urlopen("http://x.co/3WYmQ").read().split("\074title\076")[2:]]
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.