9-Loch-Challenge [geschlossen]


65

Die 9-Loch-Herausforderung

  • 9 Code Golf Herausforderungen unterschiedlicher Schwierigkeitsgrade.
  • Strafen für die mehrmalige Verwendung derselben Sprache.
  • Die Frage wird mit Pars, Hole Champions und Pokalsiegern aktualisiert.

    Dies geht auf einen Wettbewerb zurück, den ich mit einigen Freunden veranstaltet habe. Es ist nicht das übliche Format, aber ich hoffe, dass einige von Ihnen den unterschiedlichen Dreh zu schätzen wissen. Herausforderungen, Regeln und Trophäen unten.

Löcher

  1. Greenway (24)

    f(c:string, n:integer)
    Gibt eine Zeile mit nInstanzen von aus c.

  2. Irgendwo im Rough (73)

    f(t:string, s:string, n:integer) -> i
    Wo iist der Index der nthInstanz von sin t.

  3. Curry zum Abendessen (6235)

    f(x:function, y: function) -> g Wo gist eine Funktion, die aufgerufen wird y, nmal; wo nist der Rückgabewert vonx

  4. Speien (92)

    f(p:string) Schreibt in eine Datei pund füllt sie mit einem zufällig großen Rechteck aus zufälligen Zeichen (ASCII).

  5. Schatzsuche (75)

    f(p:string, c:char) -> (x, y) Liest Datei auf , pdie ein Gitter von Symbolen enthält und gibt die xund yKoordinaten der ersten Instanz des Symbols innerhalb des Gitters, annehmen , dass es vorhanden ist .

  6. Brücke über den Kwai (179)

    f(l:list[int]) Druckt das Differenzbrückendiagramm für l. ZB für[1,7,3,17,1]

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

    Stellen Sie sicher, dass die Leerzeichen entsprechend der Größe der obigen Zahl erstellt werden. Für eine dreistellige lange Nummer benötigen Sie 4 Leerzeichen zwischen den Ziffern in der Zeile darunter.

    Fang: Irgendwo muss Ihr Code Hosen buchstabieren (Muss mindestens 1 nicht alphanumerische Trennzeichen haben. ZB tr(ou,se)(rs)

  7. Die Zeit vergeht, wenn du Golf spielst (1157)

    f(p:string) -> [h, m] Liest eine Datei, in pder eine ASCII-Darstellung einer analogen Uhr enthalten ist, wobei der Stundenzeiger mit einer Zeile und die Minuten mit zwei Zeilen dargestellt sind. Eine Liste mit zwei Elementen ausgeben: die auf der Uhr angezeigten Stunden und Minuten. Wenn nur eine Hand sichtbar ist, nehmen Sie beide Zeiger auf diese Position.

    Hier sind alle möglichen Kombinationen für eine Hand.

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

    Diese Positionen sind jeweils (12, 1, 3, 5, 6, 7, 9, 11). Angenommen, die anderen Zeichen im Ziffernblatt sind Leerzeichen.

  8. Bauholz! ()

    f(p:string) -> b:boolean Wobei p der Pfad zu einer Datei mit einem ASCII-Gebäude ist. Blöcke mit Leerzeichen darunter werden fallen. (Mit Ausnahme von Schrägstrichen, die an Ort und Stelle bleiben, wenn sich ein stabiler Block in der entgegengesetzten Richtung zu ihrer Ausrichtung befindet.) Wenn das Gebäude strukturell einstückig ist, geben Sie true zurück, andernfalls false. Alle Nicht-Whitespace-Blöcke werden als solide gewertet und mit Ausnahme von Schrägstrichen fallen sie alle.

    Statisch sicher

    ____
    |/\|
    |  |
    

    Nicht sicher

    |__
      | 
      |
    

    Sichere Version

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

    f(s:string, r:string, p:string) Ruft die Titel der Top-20-Storys in Hacker News ab und ändert alle Instanzen von sto r. Anschließend werden die neuen Titel in eine HTML-Datei unter geschrieben p, in der jeder Titel in einem h1-Element enthalten ist.

    Die ausgegebene Datei sollte ungefähr so ​​aussehen

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

    Fang :

    • Sie dürfen die HN-API nicht verwenden.
    • Sie dürfen Regex nicht verwenden.
    • Sie dürfen keine spitzen Klammern in Ihrem Code verwenden.

Wertung

  • Die Anzahl der Zeichen ist die Länge der Funktion, die korrekt kompiliert und ausgeführt wird. Sie müssen jedoch weiterhin den vollständigen Code einschließlich der Importe übermitteln.
  • + 10% für jede wiederholte Sprache in Ihrem Beitrag. (Wenn Sie beispielsweise Ruby für 3 Lösungen verwenden, wird Ihre Endpunktzahl mit 1,2 multipliziert.) Verschiedene Versionen derselben Sprache zählen immer noch als dieselbe Sprache.
  • Par ist die durchschnittliche Punktzahl für jedes Loch.
  • Senden Sie Ihre Lösungen in einer Antwort.
  • Ihre Gesamtpunktzahl ist die Anzahl Ihrer Charaktere + Ihre Sprachstrafe, dann runden Sie es auf.

Trophäen

  • Gold Jacket - ( @Sprigyig - 1290) Niedrigste Gesamtpunktzahl
  • Shooter - ( @Sprigyig - 9) Die meisten verwendeten Sprachen
  • Bunker - Höchste Punktzahl in einem Loch
  • Snakes on a Plane - ( @AsksAnyway - 1727) Höchste Python- Zeichenübertragung in einer einzigen Lösung
  • Good Parts - ( @AsksAnyway - 255) Höchste Anzahl von JS-Zeichen in einer einzelnen Lösung
  • Shakey Steve - Kürzeste Lösung, die Schnittstellen verwendet
  • Sie sind nicht von Round Here - Kürzeste eindeutige Sprachlösung, bei der die Sprache die kürzeste Wikipedia-Seite hat.
  • Happy Gilmoore - ( @AsksAnyway - 31) Kürzeste Lösung mit dem Wort "Alligator" im Code.
  • Unicycling Dwarf Magic - Die Standarderweiterungen Ihrer 9 Einreichungsquelldateien sind ein perfektes Anagramm eines Wortes im Oxford Dictionary.

Sie haben erst dann Anspruch auf eine Trophäe, wenn Sie alle 9 Löcher abgeschlossen haben


Einreichungen

  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
Eine analoge Uhr hat 12 Positionen für jeden Zeiger, aber Sie geben uns nur 8. Wie funktioniert das?
Kevin

1
@DanPrince Soll sich die /Position auf 1 Uhr oder 2 Uhr beziehen? (und ähnlich für alle anderen Diagonalen)
Apnorton

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

2
Werden verschiedene Versionen oder Geschmacksrichtungen einer Sprache für Bewertungszwecke als "unterschiedlich" angesehen? zB Python 2 gegen Python 3? Visual Basic gegen VB.Net gegen VBScript? Wie wäre es mit Supersets oder Near-Supersets wie C vs C ++? Entschuldigung für die Pedanterie, aber das ist Code-Golf! :-)
Darren Stone

Antworten:


11

Ergebnis: 4651

2907 + 60% Strafe

1. GolfScript - 14 Zeichen

{*}:a;lligator

Verwendung: c n azB "test" 3 a->testtesttest

Star Glückliches Gilmoore

2. Python - 72 Zeichen

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 Zeichen

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

StarBunker StarGute Teile

4. Python - 132 Zeichen

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 Zeichen

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 Zeichen

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 Zeichen

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]

Star Schlangen auf einem Flugzeug

8. Python - 226 Zeichen

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 Zeichen

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]

Was hat der Kommentar "#alligator" mit dem Code # 1 zu tun? Es scheint aus irgendeinem Grund in der Wortzahl enthalten zu sein.
Dhara

1
@Dhara Es ist für die Happy Gilmoore-Trophäe: "Kürzeste Lösung, die das Wort" Alligator "im Code enthält."
PhiNotPi

# 9 verwendet spitze Klammern ( i<i<42), oder sind sie zulässig, solange Sie sie nur als Operatoren verwenden?
Christopher Creutzig

@ChristopherCreutzig Danke behoben.
AsksAnyway

7

Ergebnis: 1320

Ich habe viel zu tun, um diese Punktzahl zu verbessern ... Na ja, zumindest habe ich mehrsprachige Strafen vermieden. :-)

1. Python (21 Zeichen)

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

Die "naheliegende" Lösung.

2. ECMAScript 6 (47 Zeichen)

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

Findet den Index auf etwas unkonventionelle Weise, indem die Länge des vorangestellten Teilstrings gezählt wird.

3. J (12 Zeichen)

f=:2 :'v^:u'

Die eingebaute Konjunktion ^:erhöht eine Funktion auf eine Potenz (dh wiederholt eine Funktion eine bestimmte Anzahl von Malen). Das heißt, f^:3 y = f (f (f y))). Es ist jedoch überladen, um alos Funktionen anstelle von ganzen Zahlen zu akzeptieren. In diesem Fall führt es die Funktion für die Eingabe aus, um die Anzahl der Wiederholungen zu ermitteln. Leider müssen wir die Operanden für die Aufgabe umdrehen, sonst hätten wir die richtige Antwort f=:^:.

4. C (95 Zeichen)

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

Diese Aufgabe lässt einiges an Interpretations- und Missbrauchsspielraum: Ist es in Ordnung, nur ein zufälliges druckbares ASCII-Zeichen auszugeben und zu sagen, dass es sich um ein zufällig dimensioniertes Rechteck mit Abmessungen aus der Menge {1} handelt? Wahrscheinlich nicht. Wie auch immer, ich habe mich für schlicht entschieden, rand()aber in Wirklichkeit möchten Sie wahrscheinlich %9etwas hinzufügen , wenn Sie es testen möchten. Auf meiner Linux-Box musste ich die Datei nicht entleeren, damit sie geschrieben wurde (ich vermute, sie wird beim Beenden des Programms automatisch entleert), aber ich bin mir ziemlich sicher, dass Sie sie entleeren müssen, um den Standards zu entsprechen frei, um fflush(f);die Zählung hier hinzuzufügen .

5. Haskell (100 Zeichen)

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

Ich mag das wiederholte Muster zwischen dem Finden der Zeile und der Spalte (abstrahiert über h).

6. Lua (261 Zeichen)

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

Verwendet mehrere Rückgabewerte und eine Rekursion, um die Differenzen zu berechnen. Es hat mich ein paar Zeichen gekostet, genau mit der Beispielausgabe übereinzustimmen (und überall die richtige Menge an Leerzeichen hinzuzufügen).

7. Los (307 Zeichen)

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

Könnte wahrscheinlich viel mehr golfen werden; Ich kenne Go kaum.

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

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

Ein bisschen billig, da ich bereits JS habe. Naja. Gibt einen falschen Wert (nämlich undefined) oder einen wahren Wert (nämlich 1) zurück, um die Antwort anzugeben.

9. Bash (254 Zeichen)

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
}

(Zeilenumbrüche nach Pipes wurden zur besseren Lesbarkeit hinzugefügt.) Das Umgehen der Einschränkungen mit der Shell hat Spaß gemacht. Mir ist klar, dass es wahrscheinlich einen besseren Weg gibt $2,$4,$6,..., aber das war es, was ich mir ohnehin ausgedacht habe.


1
Gibt es einen Grund, warum Sie Importe / Includes nicht in die Zeichenanzahl einbezogen haben? Ansonsten tolle Arbeit!
Grc

1
Oh ja, das habe ich vergessen zu erwähnen. Da in der Frage betont wird, dass "Sie nur die Funktion einreichen müssen", hielt ich es für angemessen, die Kosten für die Einbeziehung von Standardbibliotheken zu ignorieren.
FireFly

Für Loch 1f=str.__mul__
Snakes and Coffee

@ SnakesandCoffee, das es leider nicht auf stdout druckt. :(
FireFly

5

Ergebnis: 1.394,4

996 Zeichen + 40% Strafe

1. Greenway - Haskell, 19 Zeichen

f c n=replicate n c

Verwendungszweck:

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

2. Rough - PHP, 72 Zeichen

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

3. Curry - JavaScript 1.8, 45 Zeichen

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

4. Spew - J, 43 Zeichen

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

Verwendungszweck:

f 'file.txt'

5. Schatz - J, 64 Zeichen

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

Verwendungszweck:

'file.txt' f 'c'

6. Bridge - Python, 166 Zeichen

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 Zeichen

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]

Es wird davon ausgegangen, dass die Zeilen mit einem Abstand von fünf Zeichen aufgefüllt sind. Verwendet Registerkarten für die zweite Einrückungsstufe.

8. Timber - Python, 190 Zeichen

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 Zeichen

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

Vielen Dank an Tyzoid für die Idee des URL-Kürzers.


Sehr beeindruckt von deinem Python, viele Tricks, aus denen du lernen kannst.
AsksAnyway

1
@ AsksAnyway Vielen Dank. Stellen Sie sicher, dass Sie dies überprüfen , wenn Sie dies noch nicht getan haben.
Grc

1
Ähm, sicher ist dein (1) in J, nein? Möglicherweise haben Sie vergessen, die Überschrift / den Probelauf zu aktualisieren.
FireFly

@FireFly Ja, mein Fehler. Ich habe die Bewertung und Verwendung aktualisiert, aber vergessen, die tatsächliche Lösung zu ändern.
Grc

4

Edit: Denke, ich werde dies einfach so einreichen, wie es ist: 1290 insgesamt, keine Sprachwiederholungen.

Greenway, C # 53

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

Ich habe mich entschieden, die Sprachen mit # 1 und # 9 zu tauschen. Insgesamt 30 wert hier für Hunderte später.

Irgendwo im Rough, Python 59

Ich hätte wirklich keine so gute Sprache für ein einfaches Problem aufbrauchen sollen. Wie ist dies auch nicht Teil des Funktionsverzeichnisses einer Sprache? Ich brauche das anscheinend immer ...

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

Curry zum Abendessen, Lisp 61

Ich habe Lisp seit dieser einen Woche im College nicht mehr angerührt ...

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

Spew, Bash / Shell-Utensilien 102

Mein Bash-Foo war anfangs noch nie so gut. Ich werde später damit experimentieren. BTW, wenn Sie es schneller beenden möchten, schalten Sie es auf / dev / urandom um.

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

Schatzsuche, C 113

Wahrscheinlich eines der eher C-freundlichen Probleme. Ich habe "return two integers" so interpretiert, dass ein return array pointer als Argument genommen wird. Warnungen? Welche Warnungen? Ein int * ist genauso gut wie ein 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;}

Brücke über den Kwai, Perl 207

Ich habe angefangen, Perl zu lernen, während ich dieses geschrieben habe. (Besser spät als nie!) Ich wollte Regex-Heldentaten ausführen, also bilde ich die Zeichenfolge als beide Ebenen der Brücke zusammen und benutze dann Regex mit Leerzeichen-Ersetzungen, um die zwei verschiedenen Linien zu bilden.

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}

Die Zeit vergeht, wenn Sie Golf spielen, Java 297

Sie können nur so viel tun, um Java knapp zu machen ... Es wird davon ausgegangen, dass die Uhr mit Leerzeichen aufgefüllt ist, sodass jede Zeile 5 Leerzeichen lang ist.

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

Bauholz! Javascript 201

Es läuft in der Konsole von Chrome. Ich mache keine Garantien anderswo = p. Es ist erforderlich, dass die Zeilen bis zur Länge der längsten Zeile mit Leerzeichen aufgefüllt werden. Ich halte dies für eine vernünftige Forderung der ASCII-Kunst.

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

Dies ist nicht nur eine großartige Antwort, sondern auch eine großartige Lektüre. Gut gemacht!
Dan Prince

Danke, ich stelle mir vor, dass es etwas weniger interessant ist, seit ich Ruby und C # getauscht habe. Keine
Wut

4

Hatte Spaß, ein paar Sprachen für ein bisschen zu berühren ...

Die Anzahl der Zeichen, die nach dem Entfernen unnötiger Leerzeichen / Zeilenumbrüche erhalten wurden, wird jedoch größtenteils lesbar gehalten. Da es sich bei der Frage um eine Mischung aus Funktionen und Programmen handelt, habe ich bei Bedarf nur den Hauptteil der Funktion einbezogen.

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

Lesbare Version:

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

Beachten Sie, dass die Uhr aufgefüllt werden muss (dh alle Zeilen sind gleich lang).

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- Rubin (~ 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
Schön, aber Ihre Nummer 9 verwendet Winkel, was gegen die Regeln für dieses Loch verstößt.
Rik Smith-Unna

@RichardSmith: Danke ... Ich muss das beheben.
Guy Sirton

1
Vorsicht bei Loch 3, es gibt keine Garantie, dass x () bei jedem Funktionsaufruf dieselbe Nummer zurückgibt!
Tyzoid

@ Tyzoid: Ich dachte darüber nach, es zu erfassen ... Du hast Recht, das ist meine Annahme / Interpretation der Spezifikation.
Guy Sirton

2

Nicht wirklich hier, um Golf zu spielen, aber hier ist etwas Tcl, da die Sprache mehr Liebe braucht:

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
}

Meist ungetestet, weil das Schreiben dieser Procs in einer halben Stunde viel interessanter ist als der Versuch, den Golfcode richtig zu entwickeln. Genießen!


2

Hatte nur die Hälfte Zeit, um daran zu arbeiten. Sie scheinen sie in Form einer Funktion und nicht als Einzeiler zu wollen. Das sind also alles Funktionen. Testcode unterhalb der Funktion. In Perl.

Greenway:

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

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

Rau:

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

Speien:

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

Schatz:

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

Ich werde morgen an 6-9 arbeiten.


2

WIP. Beachten Sie, dass die Anzahl der Zeichen aufgrund von '\n'und möglicherweise deaktiviert istwc

[1 Greenway] Mindf * ck, 54 Zeichen

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

Verwendung: Wenn der Code geschrieben ist, geben Sie Ihre Zeichenfolge ein und schließen Sie die Zeichenfolge mit einem ^ a (Strg + a) ab. Geben Sie anschließend sofort Ihre Nummer ein.

Eine Einschränkung: Die angegebene Zahl darf nur zwischen 0 und 9 liegen. (Wenn Sie eine größere Zahl wünschen, wird der ASCII-Wert 48 des von Ihnen eingegebenen Zeichens verwendet. n)

Bildschirmfoto:

Bildschirmfoto

[3 Curry for Dinner] Javascript, 59 Zeichen

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

[4 Spew] BASH, 56 Zeichen

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

[7 Zeit vergeht, wenn Sie Golf spielen] C, 334 Zeichen (412 mit Makrodefinition)

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

Hinweis: Diese Funktion gibt einen Zeiger auf ein zweidimensionales ganzzahliges Array zurück, das wie folgt formatiert ist: {3, 55} (für eine Uhrzeitposition von Stunde auf 3, Minute auf 11)

[9 Slacker News] PHP, 246 Zeichen

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

Separate / Original-Implementierung in BASH + AWK, 218 Zeichen

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. Irgendwo im Rauen (Mathematica - 43)

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

3. Curry zum Abendessen (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. Schatzsuche (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. Brücke über den 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. Die Zeit vergeht, wenn Sie Golf spielen (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. Holz! (Los - 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

Ich bin ein Betrüger und ich nicht alle 9 Löcher gespielt ... noch . Dennoch, hier ist meine 8, "Timber" -Lösung in Perl (149 Zeichen).

Einer meiner Mitarbeiter hat dies als Herausforderung bei der Arbeit aufgefasst. Wir haben Spaß daran gehabt, besonders ich, da ich bisher die niedrigste Par-Lösung habe!

Unsere Regeln lauteten, dass es sich um ein eigenständiges Skript handeln musste, das einen Zeilenumbruch ausgab trueoder falsean den ein Zeilenumbruch folgte STDOUT, und dass kein "shebang" in Ordnung war.

Unten ist die "minimierte" Lösung. Ich habe auch ein „ Kernstück “ desselben verfasst, das nicht „minimierten“ Code und (oft langwierige) Erklärungen der Gründe für meinen Ansatz enthält.


$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

Ich bin zu faul, um es gemäß den Wettkampfregeln zu modifizieren Meh, aber es funktioniert gut ...

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

Erster Code Golf! (Noch in Arbeit ...)

1. Greenway

Sprache: Python 3.2.3
Dateigröße: 23 Bytes
Code:

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

3. Curry zum Abendessen

Sprache: Python 3.2.3
Dateigröße: 64 Bytes
Code:

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

Wenn ich es richtig verstanden habe, werden Ihnen Punkte für die zweimalige Verwendung derselben Sprache angedockt. Wenn Sie es nur zum Spaß machen, kein Problem.
Hosch250

@ user2509848 Ich kenne keine 9 Golf-fähigen Sprachen, daher muss ich einige angedockt haben. :( Vielen Dank für die Köpfe nach oben, aber!
Apnorton

Ruby, Perl, Golfscript und Mathematica sind oft Gewinner
Hosch250

Ich kenne nur C ++ mit etwas Java und weniger Python 3.2.3. Nichts anderes als HTML und CSS (die sowieso nicht verwendet werden können (CSS)).
Hosch250

0

Eine weitere Arbeit ist in Arbeit, und ich bin auf der Arbeit, also gehe ich später zurück.

Greenway in Ruby (14 Zeichen, 24 mit #alligator ), rufen Sie mit anf.(c, n)

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

Bildschirmfoto

Greenway

Irgendwo im Rough in CoffeeScript (38 Zeichen)

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

Bildschirmfoto

Irgendwo im Rough

Curry zum Abendessen in JavaScript (54 Zeichen)

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

Bildschirmfoto

Curry zum Abendessen

Spew in PHP (111 Zeichen)

Dies setzt short_open_tagvoraus, dass in der PHP-Konfigurationsdatei aktiviert ist. Andernfalls sollte das öffnende Trennzeichen lauten <?php. Die @Symbole werden verwendet, um PHP_NOTICEFehler zu unterdrücken , die ausgelöst werden, um das Einschließen randin Anführungszeichen zu vermeiden und um die $sVariable nicht explizit zu deklarieren . Dadurch wird ein quadratisches Raster mit ASCII-Zeichen zwischen 4 und 30 Zeichen auf beiden Achsen erzeugt.

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

Bildschirmfoto

Speien


Mit welchem ​​Terminal arbeiten Sie?
Alexander Craggs

0

1. Greenway (Python 2: 20)

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

Beispieleingabe: a("asdf",3)-> string ( asdfasdfasdf)

2. Irgendwo im Rough (Python 2: 47)

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

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

3. Curry zum Abendessen (Javascript: 61)

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

Eingabebeispiel: function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();-> meldet string(1)sich 3 mal an der Konsole an.

Gibt gemäß Spezifikation ceine Funktion zurück und führt diese Funktion selbst nicht aus.

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

Eigentlich nicht getestet, sollte aber funktionieren.


0

Einige Einrückungen bleiben aus Gründen der Lesbarkeit erhalten, wurden jedoch beim Zählen von Zeichen entfernt. Die Summe ist um 1227 . Oder nicht, ich habe ein Problem vergessen. 1486 1465 Zeichen.

1. MIPS ASM (55 Zeichen)

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

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

3. F # (39 Zeichen)

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

4. PowerShell (133 Zeichen)

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

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

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

Ich suchte nach einer Ausrede, um Haskell auszuprobieren. Ich dachte, ich wäre schlau, indem ich die Liste der Positionen über Zahlenkombinationen generierte, aber mit der Anzahl der benötigten Zeichen hätte ich das verdammte Ding schwer codieren können. Naja. Der Code ist grausam, aber es hat Spaß gemacht, ihn zu schreiben.

Bearbeiten: Behoben, dass es die Minuten korrekt zurückgibt.

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

Es überraschte mich, dass Strings die Indizierung im Array-Stil nicht unterstützten, sodass ich mich auf sub verlassen musste.

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

Danke an grc / Tyroid für den URL Shorter.

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:]]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.