9 Hole Challenge [chiuso]


65

The 9 Hole Challenge

  • 9 sfide di golf con codice di varia difficoltà.
  • Sanzioni per l'utilizzo della stessa lingua più di una volta.
  • La domanda verrà aggiornata con pars, campioni di buche e vincitori di trofei.

    Questo proviene da una competizione che ho con alcuni amici, non è il solito formato, ma spero che alcuni di voi apprezzeranno il diverso giro su di esso. Sfide, regole e trofei di seguito.

fori

  1. Greenway (24)

    f(c:string, n:integer)
    Stampa una riga contenente nistanze di c.

  2. Somewhere in the Rough (73)

    f(t:string, s:string, n:integer) -> i
    Dov'è il'indice nthdell'istanza di sin t.

  3. Curry for Dinner (6235)

    f(x:function, y: function) -> g Dov'è guna funzione che chiamerà y, nvolte; dove nè il valore di ritorno dix

  4. Spew (92)

    f(p:string) Scrive per archiviare in pe lo riempie con un rettangolo di caratteri casuali (ascii) di dimensioni casuali.

  5. Treasure Hunt (75)

    f(p:string, c:char) -> (x, y) Legge il file in pcui contiene una griglia di simboli e restituisce le coordinate xe ydella prima istanza di quel simbolo all'interno della griglia, supponendo che esista.

  6. Bridge on the River Kwai (179)

    f(l:list[int]) Stampa il diagramma dei ponti di differenza per l. Ad esempio per[1,7,3,17,1]

     /+6\ /-4\ /+14\  /-16\
    1    7    3     17     1
    

    Assicurarsi che gli spazi vengano creati in base alla dimensione del numero sopra. Per un numero lungo di 3 cifre, avrai bisogno di 4 spazi tra le cifre sulla riga in basso.

    Cattura: da qualche parte, il tuo codice deve contenere i pantaloni (deve avere almeno 1 delimitatori non alfanumerici. Ad es. tr(ou,se)(rs)

  7. Il tempo vola quando stai giocando a golf (1157)

    f(p:string) -> [h, m] Legge il file in pcui contiene una rappresentazione ASCII di un orologio analogico, in cui la lancetta delle ore è rappresentata da una riga e i minuti da due. Stampa un elenco contenente due elementi: le ore e i minuti mostrati sull'orologio. Se è visibile solo una mano, assumere entrambi i punti in quella posizione.

    Ecco tutte le possibili combinazioni per una mano.

    \ | /
     \|/
    --o--
     /|\
    / | \
    

    Queste posizioni, rispettivamente, sono (12, 1, 3, 5, 6, 7, 9, 11). Supponiamo che gli altri personaggi all'interno del quadrante siano spazi.

  8. Legname! ()

    f(p:string) -> b:boolean Dove p è il percorso di un file con un edificio ASCII dentro. I blocchi con uno spazio bianco al di sotto di essi cadranno. (Ad eccezione delle barre, che rimangono in posizione se c'è un blocco stabile nella direzione opposta rispetto al loro fronte). Se l'edificio è strutturalmente integrale, restituire true, altrimenti restituire false. Tutti i blocchi non bianchi vengono considerati solidi e, a parte le barre, cadono tutti.

    Strutturalmente sicuro

    ____
    |/\|
    |  |
    

    Non sicuro

    |__
      | 
      |
    

    Versione sicura

    |__
    \\| 
      |
    
  9. Slacker News (218)

    f(s:string, r:string, p:string) Ottiene i titoli delle 20 storie principali su Hacker News e modifica tutte le istanze di sin r, quindi scrive i nuovi titoli in un file html in pcui ogni titolo è contenuto in un elemento h1.

    Il file in uscita dovrebbe essere simile a questo

    <h1>Some title</h1></h1>Some other title</h1>...etc

    Cattura :

    • Non è possibile utilizzare l'APN HN.
    • Non è possibile utilizzare Regex.
    • Non è possibile utilizzare parentesi graffe angolari in qualsiasi punto del codice.

punteggio

  • Il conteggio dei caratteri è la lunghezza della funzione che verrà compilata ed eseguita correttamente. Tuttavia, devi comunque inviare il codice completo, comprese le importazioni.
  • + 10% per ogni lingua ripetuta nella richiesta. (Ad esempio, se usi Ruby per 3 soluzioni, il tuo punteggio finale verrà moltiplicato per 1,2). Versioni diverse della stessa lingua contano comunque come la stessa lingua.
  • Par sarà il punteggio medio per ogni buca.
  • Invia le tue soluzioni in una risposta.
  • Il tuo punteggio complessivo è il conteggio dei personaggi + la penalità linguistica, quindi arrotonda per eccesso.

trofei

  • Gold Jacket - ( @Sprigyig - 1290) Punteggio complessivo più basso
  • Sparatutto - ( @Sprigyig - 9) La maggior parte delle lingue utilizzate
  • Bunker - Il punteggio sopra il par sopra di ogni buca
  • Snakes on a Plane - ( @AsksAnyway - 1727) Invio di caratteri Python più alto in un'unica soluzione
  • Parti valide - ( @AsksAnyway - 255) Numero massimo di caratteri JS in un'unica soluzione
  • Shakey Steve - La soluzione più breve che utilizza interfacce
  • Qui non vieni da qui - La soluzione linguistica unica più breve che è la lingua ha la pagina wikipedia più breve.
  • Happy Gilmoore - ( @AsksAnyway - 31) La soluzione più breve con la parola "alligatore" nel codice.
  • Magia nana monocromatica - Le estensioni predefinite dei tuoi 9 file sorgente di invio sono un perfetto anagramma di una parola nell'Oxford Dictionary.

Hai diritto a un trofeo solo dopo aver completato tutte e 9 le buche


Inseriti

  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 orologio analogico ha 12 posizioni per ogni lancetta, ma tu ci dai solo 8. Come funziona?
Kevin - Ripristina Monica il

1
@DanPrince Vuoi che la /posizione si riferisca all'una o alle due? (e similmente per tutto il resto delle diagonali)
apnorton,

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

2
Diverse versioni o sapori di una lingua saranno considerati "diversi" ai fini del punteggio? ad esempio Python 2 vs Python 3? Visual Basic vs VB.Net vs VBScript? Che ne dici di superset o quasi superset come C vs C ++? Ci scusiamo per la pedanteria, ma questo è code-golf! :-)
Darren Stone il

Risposte:


11

Punteggio: 4651

2907 + 60% di penalità

1. GolfScript - 14 caratteri

{*}:a;lligator

Utilizzo: c n aad es. "test" 3 a->testtesttest

stella Felice Gilmoore

2. Python - 72 caratteri

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 caratteri

/*
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;
}

stellaBunker stellaGood Parts

4. Python - 132 caratteri

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 caratteri

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 caratteri

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 caratteri

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]

stella Serpenti su un aereo

8. Python - 226 caratteri

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 caratteri

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]

Cosa ha a che fare il commento "#alligator" con il codice # 1? Sembra essere incluso nel conteggio delle parole per qualche motivo.
Dhara,

1
@Dhara È per il trofeo Happy Gilmoore: "La soluzione più breve che ha la parola" alligatore "nel codice."
PhiNotPi

# 9 utilizza parentesi angolari ( i<i<42) o sono consentite purché vengano utilizzate solo come operatori?
Christopher Creutzig,

@ChristopherCreutzig Risolto grazie.
Chiede comunque il

7

Punteggio: 1320

Ho molto da fare per migliorare questo punteggio ... Vabbè, almeno ho evitato penalità in lingua ripetuta. :-)

1. Python (21 caratteri)

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

La soluzione "ovvia".

2. ECMAScript 6 (47 caratteri)

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

Trova l'indice in un modo un po 'non convenzionale, contando la lunghezza della sottostringa prima di esso.

3. J (12 caratteri)

f=:2 :'v^:u'

La congiunzione incorporata ^:aumenta una funzione a una potenza (cioè ripete una funzione un determinato numero di volte). Cioè, f^:3 y = f (f (f y))). Tuttavia, è sovraccarico di alos accetta le funzioni anziché gli interi, nel qual caso esegue la funzione sull'input per ottenere il numero di ripetizioni. Purtroppo dobbiamo capovolgere gli operandi per l'attività, altrimenti avremmo la risposta concisa f=:^:.

4. C (95 caratteri)

#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);}

Questo compito lascia un po 'di spazio all'interpretazione e all'abuso: va bene solo generare un carattere ASCII stampabile casuale e dire che è un rettangolo a dimensione casuale con dimensioni dall'insieme {1}? Probabilmente no. Ad ogni modo, sono andato semplicemente, rand()ma in realtà probabilmente vorrai aggiungere %9qualcosa o qualcosa se vuoi provarlo. Sul mio Linux box non ho dovuto svuotare il file per poterlo scrivere (credo che si scarichi automaticamente all'uscita dal programma), ma sono abbastanza sicuro che devi scaricarlo per essere conforme agli standard, quindi senti libero di aggiungere fflush(f);al conteggio qui.

5. Haskell (100 caratteri)

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

Mi piace lo schema ripetuto tra il trovare la riga e la colonna (astratta via h).

6. Lua (261 caratteri)

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

Utilizza più valori di ritorno e ricorsione per gestire il calcolo delle differenze. Mi è costato alcuni caratteri per abbinare esattamente l'output del campione (aggiungendo la giusta quantità di spazi ovunque).

7. Vai (307 caratteri)

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

Probabilmente si potrebbe giocare a golf molto di più; Conosco a malapena Go.

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

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 po 'un colpo economico dal momento che ho già JS. Oh bene. Restituisce un valore falso (vale a dire undefined) o un valore di verità (vale a dire, 1) per indicare la risposta.

9. Bash (254 caratteri)

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
}

(Newline dopo pipe aggiunte per leggibilità.) Lavorare intorno alle restrizioni con la shell è stato divertente. Mi rendo conto che probabilmente c'è un modo migliore di fare $2,$4,$6,..., ma questo è quello che mi è venuto in mente comunque.


1
C'è qualche motivo per cui non hai incluso le importazioni / include nel conteggio dei personaggi? Altrimenti, ottimo lavoro!
grc

1
Oh sì, ho dimenticato di menzionarlo. Dato che la domanda sottolinea che "devi solo inviare la funzione" stavo pensando che sarebbe giusto ignorare il costo di includere le librerie standard.
FireFly

Per la buca 1f=str.__mul__
Snakes and Coffee,

Sfortunatamente @SnakesandCoffee che non lo stampa su stdout. :(
FireFly

5

Punteggio: 1.394,4

996 caratteri + 40% di penalità

1. Greenway - Haskell, 19 caratteri

f c n=replicate n c

Uso:

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

2. Ruvido - PHP, 72 caratteri

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

3. Curry - JavaScript 1.8, 45 caratteri

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

4. Spew - J, 43 caratteri

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

Uso:

f 'file.txt'

5. Tesoro - J, 64 caratteri

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. Bridge - Python, 166 caratteri

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. Time - Python, 205 caratteri

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]

Presuppone che le linee siano riempite di spazio con una larghezza di cinque caratteri. Utilizza le schede per il secondo livello di rientro.

8. Legname - Python, 190 caratteri

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 caratteri

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

Grazie a Tyzoid per l'idea dell'accorciatore di url.


Sono rimasto molto colpito dal tuo Python, molti trucchi da cui imparare.
Chiede comunque il

1
@AsksAnyway Grazie. Assicurati di controllare questo se non l'hai già fatto.
GRC,

1
Umm, sicuramente il tuo (1) è in J, no? Forse hai dimenticato di aggiornare l'intestazione / l'esecuzione del campione.
FireFly,

@FireFly Sì, il mio errore. Ho aggiornato il punteggio e l'utilizzo ma ho dimenticato di cambiare la soluzione effettiva.
grc

4

Modifica: pensa che lo invierò così com'è: 1290 totale, nessuna ripetizione della lingua.

Greenway, C # 53

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

Ho deciso di scambiare le lingue con # 1 e # 9. Ne vale assolutamente 30 qui per centinaia dopo.

Somewhere In The Rough, Python 59

Non avrei davvero dovuto usare un linguaggio così buono su un problema facile. Inoltre, in che modo questo non fa parte dell'indice di nessuna lingua della famiglia di funzioni? Mi sembra di aver sempre bisogno di questo ...

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

Curry For Dinner, Lisp 61

Non tocco Lisp da quella settimana al college ...

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

Utilità Spew, Bash / shell 102

Il mio bash-foo non è mai stato così bello per cominciare. Giocherò con questo più tardi. A proposito, se vuoi che finisca più velocemente, commutalo su / dev / urandom.

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

Caccia al tesoro, C 113

Probabilmente uno dei problemi più amichevoli. Ho interpretato "restituire due numeri interi" come prendere un puntatore a matrice di ritorno come argomento. Avvertimenti? Quali avvertimenti? Un int * è buono quanto 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;}

Ponte sul fiume Kwai, Perl 207

Ho iniziato ad imparare il perl mentre scrivevo questo. (Meglio tardi che mai!) Mi sono imbattuto in questo voler fare eroi regex, quindi formo la corda come entrambi gli strati del ponte insieme, quindi uso regex con sostituzioni di spazio per formare le due diverse linee.

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}

Il tempo vola quando giochi a golf, Java 297

Puoi fare solo così tanto per rendere Java più stretto ... Presuppone che l'orologio sia riempito di spazio, quindi ogni riga è lunga 5 spazi.

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};}

Legname! Javascript 201

Funziona nella console di Chrome. Non fornisco garanzie altrove = p. Richiede che le linee siano riempite di spazio per la lunghezza della linea più lunga. Sento che questa è una ragionevole richiesta di 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

Non solo è un'ottima risposta, ma anche un'ottima lettura. Buon lavoro!
Dan Prince,

Grazie, immagino che sia un po 'meno interessante ora che ho scambiato rubino e C #. Niente più ranting sulla divisione di folle stringa di .Net =)
Sprigyig

4

Mi sono divertito a toccare alcune lingue per un po '...

Conteggio dei caratteri ottenuto dopo aver rimosso gli spazi / le nuove righe non necessari ma l'invio è stato per lo più leggibile. Dato che la domanda è un mix di funzioni e programmi ho incluso solo il corpo della funzione dove richiesto ... Anche un po 'di libertà presa con quale sia il significato di "ritorno" ...

Totale ~ 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);}

Versione leggibile:

#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- Vai (~ 301)

Nota che questo richiede che l'orologio sia imbottito (cioè tutte le linee hanno la stessa lunghezza).

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- Rubino (~ 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
Bello, ma il tuo numero 9 usa parentesi graffe angolari, il che è contro le regole per quel buco.
Rik Smith-Unna,

@RichardSmith: grazie ... dovrò sistemare quello.
Guy Sirton,

1
Attento al foro n. 3, non vi è alcuna garanzia che x () restituirà lo stesso numero ad ogni chiamata di funzione!
Tyzoid,

@Tyzoid: stavo pensando di catturarlo ... Hai ragione, è il mio presupposto / interpretazione della specifica.
Guy Sirton,

2

Non proprio qui per giocare a golf, ma ecco alcuni Tcl, poiché la lingua ha bisogno di più amore:

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
}

Per lo più non testato perché scrivere questi proc in mezz'ora è molto più interessante che provare a progettare correttamente il codice di golf. Godere!


2

Ho avuto solo il tempo di lavorare su 1/2 di questi. Sembra che tu li voglia sotto forma di una funzione e non di una riga. Quindi tutte queste sono funzioni. Codice di test sotto la funzione. In Perl.

Via Verde:

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

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

Ruvido:

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);

vomitare:

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);

Lavorerò domani 6-9.


2

WIP. Nota, il conteggio dei caratteri potrebbe essere disattivato a causa di '\n'ewc

[1 Greenway] Mindf * ck, 54 caratteri

>>+[+>,-]<[<]>,<<++++++++[>>------<<-]>>[>[.>]<[<]>-]

Uso: una volta scritto il codice, inserisci la stringa e termina la stringa con un ^ a (ctr + a), quindi subito dopo, inserisci il tuo numero.

Un avvertimento: il numero indicato deve essere solo compreso tra 0 e 9 (se si desidera un valore maggiore, verrà utilizzato il valore ASCII-48 di qualunque carattere inserito n)

Immagine dello schermo:

Immagine dello schermo

[3 Curry for Dinner] Javascript, 59 caratteri

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

[4 Spew] BASH, 56 caratteri

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

[7 Il tempo vola quando giochi a golf] C, 334 caratteri (412 con definizione 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: questa funzione restituisce un puntatore a un array di numeri interi bidimensionali, formattato in questo modo: {3, 55} (per una posizione dell'ora di 3 su, minuti di 11 su)

[9 Slacker News] PHP, 246 caratteri

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");}}

Implementazione separata / originale in BASH + AWK, 218 caratteri

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. Greenway (Haskell - 37)

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

2. Somewhere in the Rough (Mathematica - 43)

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

3. Curry for Dinner (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. Caccia al 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. Ponte sul fiume 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. Il tempo vola quando giochi a 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. Legname! (Vai - 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. Notizie su Slacker (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

Sono un truffatore e io non è giocato tutte le 9 buche ... ancora . Tuttavia, ecco la mia buca 8, soluzione "Timber" in Perl (149 caratteri).

Uno dei miei colleghi lo ha definito una sfida sul lavoro. Ci siamo divertiti, soprattutto io, dal momento che ho la soluzione par più bassa finora!

Le nostre regole erano che doveva essere una sceneggiatura autonoma emessa trueo falseseguita da una nuova riga STDOUTe che nessun "shebang" era OK.

Di seguito è la soluzione "minimizzata". Ho anche formulato un " riassunto " dello stesso che include un codice non "minimizzato" e (spesso tortuosamente lunghe) spiegazioni del ragionamento alla base del mio approccio.


$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

Sono troppo pigro per modificarlo secondo le regole della concorrenza Meh, ma funziona bene ...

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

Primo codice golf! (Ancora un lavoro in corso ...)

1. Greenway

Lingua: Python 3.2.3
Dimensione file: 23 byte
Codice:

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

3. Curry per cena

Lingua: Python 3.2.3
Dimensione file: 64 byte
Codice:

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

Sarai ancorato punti per aver usato la stessa lingua due volte, se ho capito bene. Se lo fai solo per divertimento, nessun problema.
Hosch250,

@ user2509848 Non conosco 9 lingue che possono giocare a golf, quindi dovrò essere ancorato un po '. :( Grazie per il testa a testa, però!
apnorton

Ruby, Perl, Golfscript e Mathematica sono spesso vincitori
Hosch250

Conosco solo C ++, con un po 'di Java e meno Python 3.2.3. Nient'altro che HTML e CSS (che non possono essere utilizzati comunque (CSS)).
Hosch250,

0

Un altro lavoro in corso qui, e io sono al lavoro, quindi tornerò più tardi.

Greenway in Ruby (14 caratteri, 24 con #alligator ), chiama conf.(c, n)

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

Immagine dello schermo

Via Verde

Somewhere in the Rough in CoffeeScript (38 caratteri)

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

Immagine dello schermo

Da qualche parte nel grezzo

Curry for Dinner in JavaScript (54 caratteri)

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

Immagine dello schermo

Curry per cena

Spew in PHP (111 caratteri)

Ciò richiede short_open_tagl'attivazione nel file di configurazione di PHP. Altrimenti dovrebbe essere il delimitatore di apertura <?php, i @simboli vengono usati per mettere a tacere gli PHP_NOTICEerrori che vengono generati per evitare di racchiuderli randtra virgolette e per non dichiarare esplicitamente la $svariabile. Ciò genererà una griglia quadrata di caratteri ASCII tra 4 e 30 caratteri su entrambi gli assi.

<? @$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);

Immagine dello schermo

vomitare


Qual è quel terminale che stai usando?
Alexander Craggs,

0

1. Greenway (Python 2: 20)

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

Esempio di input: a("asdf",3)-> string ( asdfasdfasdf)

2. Somewhere in the Rough (Python 2: 47)

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

Esempio di input: b("1,2,333,4,5,6",",",3)-> int (7)

3. Curry for Dinner (Javascript: 61)

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

Esempio di input: function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();-> registra string(1)sulla console ... 3 volte.

Secondo le specifiche, crestituisce una funzione e non esegue effettivamente quella funzione.

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);}}}

In realtà non testato questo, ma dovrebbe funzionare.


0

Parte del rientro viene lasciata intatta per la leggibilità, ma è stata eliminata durante il conteggio dei caratteri. Il totale è di circa 1227 . O no, ho dimenticato un problema. 1486 1465 caratteri.

1. MIPS ASM (55 caratteri)

#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. Schema (52 caratteri)

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

3. F # (39 caratteri)

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

4. Powershell (133 caratteri)

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 caratteri)

#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 caratteri)

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 caratteri)

Stavo cercando una scusa per provare Haskell. Pensavo di essere intelligente generando l'elenco delle posizioni tramite combinazioni di numeri, ma con il numero di caratteri che ci voleva avrei potuto codificare a fondo la dannata cosa. Oh bene. Il codice è atroce ma è stato divertente scriverlo comunque.

modifica: risolto in modo da restituire correttamente i minuti.

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 caratteri)

Sono stato sorpreso di scoprire che le stringhe non supportavano l'indicizzazione in stile array, quindi ho dovuto fare affidamento su 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 caratteri)

Grazie a grc / Tyroid per l'accorciatore di 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:]]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.