9 Hole Challenge [zamknięte]

65

9-dołkowe wyzwanie

  • 9 kodów golfowych o różnym stopniu trudności.
  • Kary za używanie tego samego języka więcej niż jeden raz.
  • Pytanie zostanie zaktualizowane o parów, mistrzów dołków i zwycięzców trofeów.

    Wynika to z konkursu, który prowadziłem z przyjaciółmi, nie jest to zwykły format, ale mam nadzieję, że niektórzy z was docenią jego odmienność. Wyzwania, zasady i trofea poniżej.

Dziury

  1. Greenway (24)

    f(c:string, n:integer)
    Drukuje wiersz zawierający nwystąpienia c.

  2. Somewhere in the Rough (73)

    f(t:string, s:string, n:integer) -> i
    Gdzie ijest indeks nthinstancji sw t.

  3. Curry na obiad (6235)

    f(x:function, y: function) -> g Gdzie gjest funkcja, która zadzwoni y, nczasy; gdzie njest wartość zwracana zx

  4. Wypluwa (92)

    f(p:string) Zapisuje do pliku pi wypełnia go losowym prostokątem losowych znaków (ascii).

  5. Poszukiwanie skarbów (75)

    f(p:string, c:char) -> (x, y) Czyta plik w pktórym opisujemy siatkę symboli i zwraca xi ywspółrzędne pierwszej instancji tego symbolu w siatce, załóżmy, że istnieje.

  6. Most na rzece Kwai (179)

    f(l:list[int]) Wyświetla diagram mostków różnic dla l. Np. Dla[1,7,3,17,1]

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

    Upewnij się, że spacje są tworzone zgodnie z rozmiarem liczby powyżej. W przypadku trzycyfrowej liczby potrzebne będą 4 spacje między cyframi w wierszu poniżej.

    Złap: Gdzieś, twój kod musi przeliterować spodnie (Musi mieć co najmniej 1 niealfanumeryczne ograniczniki. Np. tr(ou,se)(rs)

  7. Czas płynie, gdy grasz w golfa (1157)

    f(p:string) -> [h, m] Odczytuje plik, w pktórym znajduje się reprezentacja ASCII zegara analogowego, gdzie wskazówka godzinowa jest reprezentowana przez jedną linię, a minuty przez dwa. Wydrukuj listę zawierającą dwa elementy: godziny i minuty pokazane na zegarze. Jeśli widoczna jest tylko jedna ręka, załóż obie wskazują na tę pozycję.

    Oto wszystkie możliwe kombinacje ręki.

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

    Pozycje te wynoszą odpowiednio (12, 1, 3, 5, 6, 7, 9, 11). Załóżmy, że inne znaki na tarczy zegara to spacje.

  8. Drzewny! ()

    f(p:string) -> b:boolean Gdzie p jest ścieżką do pliku z wbudowanym ascii. Bloki z białą spacją pod nimi spadną. (Z wyjątkiem ukośników, które pozostają na miejscu, jeśli jest stabilny blok w kierunku przeciwnym do kierunku, w którym są zwrócone). Jeśli budynek jest strukturalnie zintegrowany, zwróć wartość true, w przeciwnym razie zwróć wartość false. Wszystkie bloki niebiałe są liczone jako stałe i inne niż ukośniki, wszystkie spadają.

    Strukturalnie bezpieczny

    ____
    |/\|
    |  |
    

    Nie jest bezpieczne

    |__
      | 
      |
    

    Bezpieczna wersja

    |__
    \\| 
      |
    
  9. Wiadomości Slacker (218)

    f(s:string, r:string, p:string) Pobiera tytuły z 20 najlepszych artykułów w Hacker News i zmienia wszystkie wystąpienia sna r, a następnie zapisuje nowe tytuły w pliku HTML w miejscu p, w którym każdy tytuł jest zawarty w elemencie h1.

    Plik wyjściowy powinien być mniej więcej taki

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

    Połów :

    • Nie można używać interfejsu API HN.
    • Nie możesz używać Regex.
    • Nie wolno używać nawiasów klamrowych w dowolnym miejscu w kodzie.

Punktacja

  • Liczba znaków to długość funkcji, która poprawnie się skompiluje i uruchomi. Jednak nadal musisz przesłać pełny kod, w tym import.
  • + 10% za każdy powtórzony język w zgłoszeniu. (Np. Jeśli użyjesz Ruby do 3 rozwiązań, twój końcowy wynik zostanie pomnożony przez 1,2). Różne wersje tego samego języka są nadal liczone jako ten sam język.
  • Par będzie średnią oceną dla każdego dołka.
  • Prześlij swoje rozwiązania w jednej odpowiedzi.
  • Ogólny wynik to liczba postaci + kara językowa, a następnie zaokrąglona w górę.

Trofea

  • Złota kurtka - ( @Sprigyig - 1290) Najniższy ogólny wynik
  • Shooter - ( @Sprigyig - 9) Większość używanych języków
  • Bunkier - najwięcej powyżej wartości nominalnej na dowolnym dołku
  • Snakes on a Plane - ( @AsksAnyway - 1727) Najwyższe ułożenie znaków w pythonie w jednym rozwiązaniu
  • Dobre części - ( @AsksAnyway - 255) Najwyższa liczba znaków JS w jednym rozwiązaniu
  • Shakey Steve - Najkrótsze rozwiązanie wykorzystujące interfejsy
  • Nie jesteś tu z rundy - najkrótsze unikalne rozwiązanie językowe, którym język ma najkrótszą stronę wikipedii.
  • Happy Gilmoore - ( @AsksAnyway - 31) Najkrótsze rozwiązanie ze słowem „aligator” w kodzie.
  • Unicycling Dwarf Magic - Domyślne rozszerzenia 9 plików źródłowych przesyłania są doskonałym anagramem słowa w Słowniku Oxford.

Trofeum kwalifikuje się dopiero po ukończeniu wszystkich 9 dołków


Zgłoszenia

  1. @Sprigyig 1290
  2. @Firefly 1320
  3. @grc 1395
  4. @Trevor M 1465
  5. @C Gearhart 1654
  6. @Guy Sirton 1719
  7. @AsksAnyway 4651
Dan Prince
źródło
2
@anorton <&>
Dan Prince
1
Zegar analogowy ma 12 pozycji dla każdej ręki, ale dajesz nam tylko 8. Jak to działa?
Kevin
1
@ DanPrince Czy chcesz, aby /stanowisko odnosiło się do godziny pierwszej lub drugiej? (i podobnie dla wszystkich pozostałych przekątnych)
apnorton
1
@anorton 1/5, 5/25, 7/35, 11/55
Dan Prince
2
Czy różne wersje lub smaki języka będą uważane za „różne” do celów punktacji? np. Python 2 vs Python 3? Visual Basic vs VB.Net vs VBScript? A co z supersetami lub prawie supersetami, takimi jak C kontra C ++? Przepraszam za pedanterię, ale to jest golf golfowy! :-)
Darren Stone

Odpowiedzi:

11

Wynik: 4651

2907 + 60% kary

1. GolfScript - 14 znaków

{*}:a;lligator

Zastosowanie: c n anp. "test" 3 a->testtesttest

gwiazda Szczęśliwy Gilmoore

2. Python - 72 znaki

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 znaków

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

gwiazdaBunker gwiazdaGood Parts

4. Python - 132 znaki

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 znaków

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 znaków

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 znaków

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]

gwiazda Węże w samolocie

8. Python - 226 znaków

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 znaki

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]
Asks Anyway
źródło
Co komentarz „#alligator” ma wspólnego z kodem nr 1? Z jakiegoś powodu wydaje się, że jest uwzględniony w liczbie słów.
Dhara
1
@Dhara Dotyczy trofeum Happy Gilmoore: „Najkrótsze rozwiązanie z kodem„ aligator ”.”
PhiNotPi
# 9 używa nawiasów klamrowych ( i<i<42), czy są one dozwolone, o ile używasz ich tylko jako operatorów?
Christopher Creutzig
@ChristopherCreutzig Naprawiono dzięki.
Asks Anyway
7

Wynik: 1320

Mam wiele do zrobienia, aby poprawić ten wynik ... No cóż, przynajmniej uniknąłem kar za powtarzające się języki. :-)

1. Python (21 znaków)

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

„Oczywiste” rozwiązanie.

2. ECMAScript 6 (47 znaków)

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

Znajduje indeks w nieco niekonwencjonalny sposób, licząc długość podłańcucha przed nim.

3. J (12 znaków)

f=:2 :'v^:u'

Wbudowana koniunkcja ^:podnosi funkcję do potęgi (tj. Powtarza funkcję określoną liczbę razy). Oznacza to, że f^:3 y = f (f (f y))). Jednak jest przeciążony, ponieważ alos akceptuje funkcje zamiast liczb całkowitych, w którym to przypadku uruchamia funkcję na wejściu, aby uzyskać liczbę powtórzeń. Niestety musimy odwrócić operandy dla zadania, w przeciwnym razie otrzymalibyśmy odpowiedź sumienia f=:^:.

4. C (95 znaków)

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

To zadanie pozostawia sporo miejsca na interpretację i nadużycia: czy dobrze jest po prostu wypisać losowy znak ASCII do wydrukowania i powiedzieć, że jest to losowo zwymiarowany prostokąt o wymiarach z zestawu {1}? Prawdopodobnie nie. W każdym razie poszedłem z prostym, rand()ale w rzeczywistości prawdopodobnie chcesz dodać %9lub coś, jeśli chcesz to przetestować. Na moim Linux-ie nie musiałem opróżniać pliku, aby go zapisać (myślę, że opróżnia się automatycznie po wyjściu z programu), ale jestem pewien, że musisz go opróżnić, aby był zgodny ze standardami, więc poczuj do dodania fflush(f);do liczby tutaj.

5. Haskell (100 znaków)

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

Podoba mi się powtarzający się wzorzec między znalezieniem wiersza i kolumny (wyodrębniony przez h).

6. Lua (261 znaków)

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

Wykorzystuje wiele wartości zwracanych i rekurencję do obliczania różnic. Kosztowało mnie kilka znaków, aby dokładnie dopasować wynik wyjściowy próbki (dodając wszędzie odpowiednią ilość spacji).

7. Go (307 znaków)

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

Prawdopodobnie można by grać w golfa o wiele więcej; Ledwo znam Go.

8. CoffeeScript (+ node.js) (223 znaków)

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

Trochę taniego strzału, ponieważ mam już JS. No cóż. Zwraca wartość fałszu (mianowicie undefined) lub wartość prawdy (mianowicie 1), aby wskazać odpowiedź.

9. Bash (254 znaków)

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
}

(Dodano nowe linie po rurach dla zwiększenia czytelności). Obejście ograniczeń z powłoką było fajne. Zdaję sobie sprawę, że jest prawdopodobnie lepszy sposób $2,$4,$6,..., ale i tak to wymyśliłem.

Robaczek świętojański
źródło
1
Czy jest jakiś powód, dla którego nie uwzględniłeś importu / liczby w liczbie znaków? W przeciwnym razie świetna robota!
grc
1
O tak, zapomniałem o tym wspomnieć. Ponieważ pytanie podkreśla, że ​​„wystarczy tylko przesłać funkcję”, pomyślałem, że sprawiedliwie byłoby zignorować koszty włączenia standardowych bibliotek.
FireFly,
Dla dołka 1f=str.__mul__
Snakes and Coffee
@SnakesandCoffee, które nie drukuje go na standardowe wyjście, niestety. :(
FireFly,
5

Wynik: 1 394,4

996 znaków + 40% kary

1. Greenway - Haskell, 19 znaków

f c n=replicate n c

Stosowanie:

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

2. Szorstki - PHP, 72 znaki

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

3. Curry - JavaScript 1.8, 45 znaków

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

4. Spew - J, 43 znaki

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

Stosowanie:

f 'file.txt'

5. Skarb - J, 64 znaki

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

Stosowanie:

'file.txt' f 'c'

6. Bridge - Python, 166 znaków

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. Czas - Python, 205 znaków

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]

Zakłada, że ​​linie są wypełnione spacją, aby mieć szerokość pięciu znaków. Używa zakładek dla drugiego poziomu wcięcia.

8. Drewno - Python, 190 znaków

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 znaki

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

Dzięki Tyzoid za pomysł skracania adresów URL.

grc
źródło
Jestem pod wrażeniem Twojego Pythona, wiele sztuczek do nauki.
Asks Anyway
1
@AsksAnyway Thanks. Sprawdź to , jeśli jeszcze tego nie zrobiłeś.
grc,
1
Umm, na pewno twój (1) jest w J, nie? Być może zapomniałeś zaktualizować nagłówek / próbkę.
FireFly,
@FireFly Tak, mój błąd. Zaktualizowałem punktację i użycie, ale zapomniałem zmienić rzeczywiste rozwiązanie.
grc
4

Edycja: Myślę, że prześlę to tak, jak jest: łącznie 1290, bez powtarzania języka.

Greenway, C # 53

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

Postanowiłem zamienić języki na numery 1 i 9. Całkowicie warte 30 tutaj za setki później.

Gdzieś w trudnych warunkach, Python 59

Naprawdę nie powinienem był używać tak dobrego języka na łatwy problem. Ponadto, jak to nie jest częścią rodziny indeksów funkcji języka? Wydaje mi się, że zawsze potrzebuję tego ...

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

Curry For Dinner, Lisp 61

Nie dotknąłem seplenienia od tamtego tygodnia na studiach ...

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

Spew, narzędzia Bash / shell 102

Moje bash-foo nigdy nie było tak dobre na początek. Zajmę się tym później. BTW, jeśli chcesz, aby skończył się szybciej, przełącz go na / dev / urandom.

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

Poszukiwanie skarbów, C 113

Prawdopodobnie jeden z bardziej przyjaznych problemów C. Zinterpretowałem „zwracaj dwie liczby całkowite” jako argument tablicy zwracającej jako argument. Ostrzeżenia? Jakie ostrzeżenia Int * jest tak samo dobry jak PLIK * = 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;}

Most na rzece Kwai, Perl 207

Zacząłem uczyć się perla podczas pisania tego. (Lepiej późno niż nigdy!) Doszedłem do tego, chcąc robić wyrażenia regularne, więc tworzę ciąg jako obie warstwy mostu razem, a następnie używam wyrażeń regularnych z zamianą spacji, aby utworzyć dwie różne linie.

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}

Czas płynie, gdy grasz w golfa, Java 297

Możesz tylko tyle zrobić, aby java terse ... Zakłada się, że zegar jest wypełniony spacją, więc każda linia ma długość 5 spacji.

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

Drzewny! JavaScript 201

Działa w konsoli Chrome. Nie udzielam żadnych gwarancji w innym miejscu = str. Wymaga to uzupełnienia linii do długości najdłuższej linii. Wydaje mi się, że jest to uzasadniona prośba o sztukę 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}

Wiadomości Slacker, 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
Sprigyig
źródło
To nie tylko świetna odpowiedź, ale także świetna lektura. Dobra robota!
Dan Prince
Dzięki, wyobrażam sobie, że teraz jest trochę mniej interesująco, kiedy zamieniłem Ruby i C #. Nigdy więcej rantingu na szalony ciąg .Net split =)
Sprigyig,
4

Baw się dobrze dotykając kilku języków przez chwilę ...

Liczba znaków uzyskana po usunięciu niepotrzebnych spacji / znaków nowej linii, ale składanie jest w większości czytelne. Ponieważ pytanie jest mieszanką funkcji i programów, w razie potrzeby zawarłem tylko część funkcji ... Również pewną swobodę przyjąłem, co znaczy „powrót” ...

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

Wersja do odczytu:

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

Uwaga: wymaga to wypełnienia zegara (tj. Wszystkie linie mają tę samą długość).

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- Rubinowy (~ 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- hack bash / Unix (~ 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
Guy Sirton
źródło
1
Fajnie, ale twój numer 9 używa nawiasów klamrowych, co jest niezgodne z regułami dla tej dziury.
Rik Smith-Unna
@RichardSmith: Dzięki ... Będę musiał to naprawić.
Guy Sirton,
1
Ostrożnie w otworze nr 3, nie ma gwarancji, że x () zwróci ten sam numer przy każdym wywołaniu funkcji!
Tyzoid
@Tyzoid: Rozważałem uchwycenie go ... Masz rację, to moje założenie / interpretacja specyfikacji.
Guy Sirton,
2

Nie do gry w golfa, ale tutaj jest trochę Tcl, ponieważ język potrzebuje więcej miłości:

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
}

Przeważnie nieprzetestowane, ponieważ napisanie tych procesów w pół godziny jest o wiele bardziej interesujące niż próba poprawnego zaprojektowania kodu golfowego. Cieszyć się!

wackadoo
źródło
2

Miałem tylko czas na pracę nad 1/2 z nich. Wydaje się, że chcesz je w postaci funkcji, a nie jednej linijki. Wszystkie są funkcjami. Kod testowy pod funkcją. W Perlu.

Zielona Droga:

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

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

Szorstki:

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

Rzygać:

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

Skarb:

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

Jutro będę pracować 6-9.

Joe
źródło
2

WIP Uwaga, liczba znaków może być wyłączona z powodu '\n'iwc

[1 Greenway] Mindf * ck, 54 znaków

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

Sposób użycia: Po napisaniu kodu wprowadź swój ciąg i zakończ go za pomocą ^ a (ctr + a), a następnie natychmiast po nim wprowadź swój numer.

Jedno zastrzeżenie: podana liczba musi wynosić od 0 do 9 (jeśli chcesz większy, wartość ascii-48 dowolnego wprowadzonego znaku zostanie użyta jako n)

Zrzut ekranu:

Zrzut ekranu

[3 Curry for Dinner] JavaScript, 59 znaków

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

[4 Spew] BASH, 56 znaków

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

[7 Czas leci, gdy grasz w golfa] C, 334 znaków (412 z definicją makr)

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

Uwaga: ta funkcja zwraca wskaźnik do dwuwymiarowej tablicy liczb całkowitych, sformatowanej w następujący sposób: {3, 55} (dla pozycji zegara godziny 3, minuty 11)

[9 Slacker News] PHP, 246 znaków

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

Oddzielna / oryginalna implementacja w BASH + AWK, 218 znaków

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";};
Tyzoid
źródło
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 na obiad (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. Poszukiwanie skarbu (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. Most na rzece 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. Czas płynie, gdy grasz w golfa (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. Drewno! (Idź - 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. Wiadomości Slackera (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'))
C Gearhart
źródło
1

Jestem oszustem i nie grałem jeszcze we wszystkich 9 dołkach… jeszcze . Niemniej jednak, oto moja dziura 8, rozwiązanie „Timber” w Perlu (149 znaków).

Jeden z moich współpracowników uznał to za wyzwanie w pracy. Dobrze się z tym bawimy, szczególnie ja, ponieważ mam jak dotąd najniższe rozwiązanie!

Nasze zasady były takie, że musiał to być samodzielny skrypt, który wypisał truelub falsenastępował po nim nowy wiersz STDOUTi że żaden „shebang” nie był w porządku.

Poniżej znajduje się „zminimalizowane” rozwiązanie. Podaję też „ sedno ” tego samego, które zawiera nie „zminimalizowany” kod i (często torturalnie długie) wyjaśnienia uzasadnienia mojego podejścia.


$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
'
roosto
źródło
0

Jestem zbyt leniwy, aby modyfikować go zgodnie z zasadami konkursu Meh, ale działa dobrze ...

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')
godz
źródło
0

Pierwszy kod golfa! (Wciąż trwają prace ...)

1. Greenway

Język: Python 3.2.3
Rozmiar pliku: 23 bajty
Kod:

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

3. Curry na obiad

Język: Python 3.2.3
Rozmiar pliku: 64 bajty
Kod:

def f(x,y):
    def g():
        for i in [1]*x(): y()
    return g
apnorton
źródło
Zostaną zadokowane punkty za używanie tego samego języka dwa razy, jeśli dobrze zrozumiałem. Jeśli robisz to dla zabawy, nie ma problemu.
Hosch250,
@ user2509848 Nie znam 9 języków, w których można grać w golfa, więc muszę trochę zadokować. :( Dziękuję za heads up!
apnorton
Ruby, Perl, Golfscript i Mathematica są często zwycięzcami
Hosch250,
Znam tylko C ++, z pewnym Javą i mniej Python 3.2.3. Nic więcej oprócz HTML i CSS (których i tak nie można użyć (CSS)).
Hosch250,
0

Kolejna praca w toku, a ja jestem w pracy, więc wrócę później.

Greenway w Ruby (14 znaków, 24 z #alligator ), zadzwoń zf.(c, n)

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

Zrzut ekranu

Zielona Droga

Somewhere in the Rough in CoffeeScript (38 znaków)

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

Zrzut ekranu

Gdzieś w trudnych warunkach

Curry na kolację w JavaScript (54 znaki)

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

Zrzut ekranu

Curry na obiad

Spew w PHP (111 znaków)

Wymaga short_open_tagto włączenia w pliku konfiguracyjnym PHP. W przeciwnym razie powinien być ogranicznik otwarcia <?php, @symbole służą do wyciszenia PHP_NOTICEbłędów, które są generowane w celu uniknięcia ujęcia randw cudzysłów i nie jawnego deklarowania $szmiennej. To wygeneruje kwadratową siatkę znaków ascii od 4 do 30 znaków na obu osiach.

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

Zrzut ekranu

Rzygać

Daniel Morris
źródło
Z jakiego terminala korzystasz?
Alexander Craggs
0

1. Greenway (Python 2: 20)

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

Przykładowe dane wejściowe: 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]))

Przykładowe dane wejściowe: 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()}};};

Przykładowe dane wejściowe: function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();-> loguje string(1)się do konsoli ... 3 razy.

Zgodnie ze specyfikacją czwraca funkcję i tak naprawdę nie wykonuje samej funkcji.

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

Nie testowałem tego, ale powinno działać.

Sumurai8
źródło
0

Niektóre wcięcia pozostały nietknięte dla czytelności, ale zostały usunięte podczas liczenia znaków. Suma wynosi około 1227 . Albo nie, zapomniałem problemu. 1486 1465 znaków.

1. MIPS ASM (55 znaków)

#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. Schemat (52 znaki)

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

3. F # (39 znaków)

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

4. PowerShell (133 znaki)

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 znaków)

#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 znaków)

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 znaków)

Szukałem wymówki, by wypróbować Haskella. Myślałem, że jestem sprytny, generując listę pozycji za pomocą kombinacji liczb, ale biorąc pod uwagę liczbę znaków, których potrzebowałem, mogłem zakodować tę cholerną rzecz. No cóż. Kod jest okropny, ale pisanie i tak było fajne.

edit: Naprawiono, więc poprawnie zwraca minuty.

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 znaków)

Byłem zaskoczony, gdy zauważyłem, że łańcuchy nie obsługują indeksowania stylu tablicy, więc musiałem polegać na 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 znaków)

Dzięki grc / Tyroid dla skracacza adresów 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:]]
TrevorM
źródło