9 отворів з отворами [закрито]


65

9 викликів на дірку

  • 9 кодових проблем із гольфу різної складності.
  • Штраф за використання однієї і тієї ж мови не один раз.
  • Питання буде оновлено парками, чемпіонами за дірками та переможцями трофеїв.

    Це відбувається через змагання, яке я маю з деякими друзями, це не звичайний формат, але я сподіваюся, що хтось із вас оцінить різну вертушку на ньому. Виклики, правила та трофеї нижче.

Отвори

  1. Грінвей (24)

    f(c:string, n:integer)
    Друкує рядок, що містить nекземпляри c.

  2. Десь у Грубій (73)

    f(t:string, s:string, n:integer) -> i
    Де iіндекс nthекземпляра sв t.

  3. Карі для вечері (6235)

    f(x:function, y: function) -> g Де gфункція, яка буде викликати y, nчас; де nповертається значенняx

  4. Виступ (92)

    f(p:string) Записує у файл pі заповнює його прямокутником випадкового розміру випадкових символів (аscіі).

  5. Пошук скарбів (75)

    f(p:string, c:char) -> (x, y) Зчитує файл в pякому міститься сітка символів і повертає xі yкоординати першого примірника цього символу в сітці, припустимо , що існує.

  6. Міст на річці Квай (179)

    f(l:list[int]) Друкує діаграму мостів різниці для l. Напр[1,7,3,17,1]

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

    Переконайтеся, що пробіли створені відповідно до розміру номера вище. Для трицифрового довгого номера вам знадобляться 4 пробіли між цифрами у рядку нижче.

    Лови: Десь у вашому коді має бути написано штани (Повинно мати принаймні 1 нелітерно-цифрові роздільники. Наприклад tr(ou,se)(rs)

  7. Час летить, коли ви граєте в гольф (1157)

    f(p:string) -> [h, m] Читає файл, в pякому міститься ASCII-зображення аналогового годинника, де годинна рука представлена ​​одним рядком, а хвилини - двома. Виведіть список, що містить два елементи: години та хвилини, показані на годиннику. Якщо видно лише одну руку, припустіть обидві точки до цієї позиції.

    Ось всі можливі комбінації для руки.

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

    Ці позиції відповідно є (12, 1, 3, 5, 6, 7, 9, 11). Припустимо, що інші символи на обличчі годинника - це пробіли.

  8. Пиломатеріали! ()

    f(p:string) -> b:boolean Де p - шлях до файлу з будівлею ascii. Блоки з білим простором під ними впадуть. (За винятком косої риси, яка залишається на місці, якщо є стійкий блок у напрямку, протилежному тому, як вони стикаються). Якщо будівля є структурно цілісною, поверніть справжнє, інакше поверніть хибне. Усі блоки, що не мають пробілу, вважаються суцільними та іншими, ніж косої риски, всі вони падають.

    Конструктивно безпечний

    ____
    |/\|
    |  |
    

    Не безпечно

    |__
      | 
      |
    

    Безпечна версія

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

    f(s:string, r:string, p:string) Отримує назви 20 кращих історій на Hacker News і змінює всі екземпляри , sщоб r, потім записує нові заголовки в HTML - файл , в p, де кожен заголовок міститься в h1 елемента.

    Виведений файл повинен мати щось подібне

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

    Ловити :

    • Ви не можете використовувати HN api.
    • Ви не можете використовувати Regex.
    • Ви не можете використовувати кутові дужки ніде у своєму коді.

Оцінка балів

  • Кількість символів - це довжина функції, яка буде правильно складати та запускати. Однак вам все одно потрібно подати повний код, включаючи імпорт.
  • + 10% за кожну повторювану мову у вашій заяві. (Наприклад, якщо ви використовуєте Ruby для 3 рішень, то ваш кінцевий бал буде помножений на 1,2). Різні версії однієї мови вважаються однаковою.
  • Пар буде середнім балом за кожну лунку.
  • Надішліть свої рішення однією відповіддю.
  • Ваш загальний бал - це ваш кількість символів + ваша мовна кара, а потім округлите його.

Трофеї

  • Золота куртка - ( @Sprigyig - 1290) Найнижчий загальний бал
  • Shooter - ( @Sprigyig - 9) Більшість використовуваних мов
  • Бункер - Найвищий показник номіналу на будь-якому отворі
  • Змії на площині - ( @AsksAnyway - 1727) Найвища подача символів пітона в одному рішенні
  • Хороші частини - ( @AsksAnyway - 255) Найбільша кількість символів JS в одному рішенні
  • Shakey Steve - найкоротше рішення, що використовує інтерфейси
  • You Not From Round Here - найкоротше унікальне мовне рішення, що мова має найкоротшу сторінку вікіпедії.
  • Happy Gilmoore - ( @AsksAnyway - 31) Найкоротше рішення, що в коді має слово 'алігатор'.
  • Unicycling Dwarf Magic - розширення за замовчуванням для ваших 9 вихідних файлів подання є ідеальною анаграмою слова в Оксфордському словнику.

Ви можете отримати трофей лише після того, як ви виконали всі 9 лунок


Подання

  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
Аналоговий годинник має 12 позицій для кожної руки, але ви даєте нам лише 8. Як це працює?
Кевін

1
@DanPrince Ви хочете, щоб ця /позиція стосувалася 1 години або 2 години? (і аналогічно для всіх інших діагоналей)
apnorton

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

2
Чи будуть різні версії або аромати мови вважатись "різними" для оцінки балів? наприклад, Python 2 проти Python 3? Visual Basic проти VB.Net проти VBScript? Як щодо суперсетів чи майже суперсетів, таких як C vs C ++? Вибачте за педантизм, але це код-гольф! :-)
Даррен Стоун

Відповіді:


11

Оцінка: 4651

2907 + 60% штрафу

1. GolfScript - 14 символів

{*}:a;lligator

Використання: c n aнаприклад "test" 3 a->testtesttest

зірка Щасливий Гілмур

2. Пітон - 72 символи

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 символів

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

зірказіркаХороші деталі бункера

4. Пітон - 132 символи

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. Пітон - 89 символів

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

6. Пітон - 189 символів

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. Пітон - 1727 символів

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]

зірка Змії на літаку

8. Пітон - 226 символів

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. Пітон - 203 символи

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]

Що стосується коментаря "#alligator" до коду №1? Здається, воно чомусь включене в число слів.
Дхара

1
@Dhara Це для трофея Happy Gilmoore: "Найкоротше рішення, яке в коді має слово" алігатор "."
PhiNotPi

№9 використовує кутові дужки ( i<i<42), або вони дозволені, якщо ви використовуєте їх лише як оператори?
Крістофер Кройціг

@ChristopherCreutzig Виправлена ​​подяка.
AsksAnyway

7

Оцінка: 1320

Мені потрібно багато зробити, щоб покращити цей показник ... Ну добре, принаймні я уникав повторних мовних покарань. :-)

1. Пітон (21 символ)

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

«Очевидне» рішення.

2. ECMAScript 6 (47 символів)

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

Знаходить індекс трохи нетрадиційним шляхом, підраховуючи довжину підрядки перед ним.

3. J (12 символів)

f=:2 :'v^:u'

Вбудований сполучник ^:піднімає функцію на потужність (тобто повторює функцію задану кількість разів). Тобто f^:3 y = f (f (f y))). Однак він перевантажений для прийому функцій, а не цілих чисел, і в цьому випадку він виконує функцію на вході, щоб отримати кількість повторень. На жаль, нам потрібно перевернути операнди для виконання завдання, інакше ми отримаємо повну відповідь f=:^:.

4. C (95 символів)

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

Це завдання залишає небагато місця для інтерпретації та зловживань: чи добре просто вивести випадковий символ ASCII для друку і сказати, що це прямокутник з випадковим розміром з розмірами з набору {1}? Напевно, ні. У всякому разі, я пішов із звичайним, rand()але насправді ви, мабуть, хочете додати %9або щось, якщо ви хочете перевірити це. У моєму вікні Linux мені не довелося промивати файл для того, щоб він був записаний (я вважаю, що він автоматично вимикається при виході з програми), але я впевнений, що вам доведеться промивати його, щоб він відповідав стандартам, тому відчуваю безкоштовно додати fflush(f);до рахунку тут.

5. Haskell (100 символів)

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

Мені подобається повторний малюнок між знаходженням рядка та стовпцем (абстрагується через h).

6. Луа (261 годин)

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

Використовує кілька повернених значень і рекурсії для вирішення обчислень різниць. Мені обійшлося в декількох символах, щоб точно відповідати вибірці вибору (додаючи всюди потрібну кількість пробілів).

7. Ідіть (307 символів)

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

Можливо, можна було б гольфу набагато більше; Я ледве знаю іти.

8. CoffeeScript (+ node.js) (223 символів)

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

Трохи дешевого пострілу, оскільки я вже маю JS. Ну добре. Повертає хибне значення (а саме undefined) або значення тризуму (а саме 1) для позначення відповіді.

9. Баш (254 символи)

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
}

(Нові рядки після додавання труб для читабельності.) Обходити обмеження з оболонкою було весело. Я розумію, що, мабуть, є кращий спосіб зробити це $2,$4,$6,..., але це все-таки я придумав.


1
Чи є якась причина, чому ви не включили імпорт / включення до числа символів? Інакше чудова робота!
grc

1
О так, я забув це згадати. Оскільки в питанні підкреслюється, що "вам потрібно лише подати функцію", я думав, що було б справедливо ігнорувати витрати на включення стандартних бібліотек.
FireFly

Для дірки 1f=str.__mul__
Змії та кава

@SnakesandCoffee, на жаль, не друкує його до stdout. :(
FireFly

5

Оцінка: 1394,4

996 символів + 40% штрафу

1. Грінвей - Хаскелл, 19 ч

f c n=replicate n c

Використання:

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

2. Груба - PHP, 72 символи

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

3. Карі - JavaScript 1,8, 45 символів

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

4. Виступ - J, 43 ч

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

Використання:

f 'file.txt'

5. Скарб - J, 64 ч

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

Використання:

'file.txt' f 'c'

6. Міст - Пітон, 166 символів

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. Час - Python, 205 символів

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]

Передбачається, що рядки мають пробіл, щоб бути шириною п'ять символів. Використовує вкладки для другого рівня відступу.

8. Пиломатеріали - Пітон, 190 символів

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. Слайкер - Пітон, 192 ч

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

Завдяки Tyzoid за ідею скорочення URL-адрес.


Дуже вражений вашим Python, багато хитрощів, з яких можна навчитися.
AsksAnyway

1
@AsksAnyway Дякую Не забудьте перевірити це , якщо ви ще цього не зробили.
grc

1
Гм, напевно ваш (1) знаходиться в J, ні? Можливо, ви забули оновити заголовок / зразок запуску.
FireFly

@FireFly Так, моя помилка. Я оновив оцінку та використання, але забув змінити фактичне рішення.
grc

4

Редагувати: Подумайте, я просто надішлю це так: всього 1290, мова не повторюється.

Greenway, C # 53

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

Я вирішив поміняти мови на №1 та №9. Цілком коштує 30 тут на сотні пізніше.

Десь у грубій, Пітон 59

Я дійсно не повинен був використовувати таку гарну мову з легкої проблеми. Крім того, як це не є частиною жодного мовного індексу сімейства функцій? Мені здається, це завжди потрібно ...

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

Карі на вечерю, Lisp 61

З того тижня в коледжі я не торкався ліс ...

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

Spew, Bash / утиліти оболонки 102

Моя баш-фуо ніколи не була такою доброю для початку. Я познайомлюсь із цим пізніше. BTW, якщо ви хочете, щоб це закінчилося швидше, переключіть його на / dev / urandom.

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

Пошук скарбів, C 113

Напевно, одна з найбільш дружніх проблем С. Я інтерпретував "повернення двох цілих чисел" як показник масиву повернення як аргумент. Попередження? Які застереження? Інт * так само хороший, як ФАЙЛ * = 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;}

Міст на річці Квай, Perl 207

Я почав вивчати перл, коли писав цей. (Краще пізніше, ніж ніколи!) Я вступив у це, бажаючи зробити гегероїку регулярних виразів, тому формую рядок як обидва шари моста разом, а потім використовую регулярні вирази з заміною простору для формування двох різних ліній.

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}

Час летить, коли ви граєте в гольф, Java 297

Ви можете зробити лише стільки, щоб зробити java tersa ... Це передбачає, що годинник є пробілом, тому кожен рядок має 5 пробілів.

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

Пиломатеріали! Javascript 201

Він працює в хромованій консолі. Я не даю жодних гарантій в іншому місці = p. Потрібно, щоб лінії були простір, прокладений до довжини найдовшої лінії. Я відчуваю, що це розумний запит мистецтва 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

Це не тільки чудова відповідь, але й чудово читає. Хороша робота!
Дан Принц

Дякую, я думаю, це трохи менш цікаво зараз, коли я поміняв рубіном та C #. Немає більше рентування на .Net's
безумний

4

Було б весело торкатися кількох мов трохи ...

Кількість символів, отримана після видалення зайвих пробілів / нових рядків, але подання здебільшого залишається читабельною. Оскільки питання полягає в поєднанні функцій і програм, я включив лише частину функції, де це потрібно ... Також деяку свободу взяли з тим, що означає "повернення" ...

Всього ~ 1719 рік

1- Пітон (~ 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);}

Читаема версія:

#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- Рекс (~ 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- Скала (~ 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- Перехід (~ 301)

Зверніть увагу, що для цього потрібно встановити годинник (тобто всі лінії однакової довжини).

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- Рубі (~ 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- баш / 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

1
Добре, але ваш №9 використовує кутові дужки, що суперечить правилам для цього отвору.
Рік Сміт-Унна

@RichardSmith: Спасибі ... мені доведеться це виправити.
Гай Сіртон

1
Обережно на отворі №3, немає гарантії, що x () поверне однакове число при кожному виклику функції!
Тизоїд

@Tyzoid: Я розглядав можливість зафіксувати це ... Ти прав, це моє припущення / інтерпретація специфікації.
Гай Сіртон

2

Насправді тут не для гольфу, але ось Tcl, оскільки мова потребує більше любові:

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
}

Переважно неперевірене, тому що писати ці програми за півгодини набагато цікавіше, ніж намагатися правильно сконструювати код гольфу. Насолоджуйтесь!


2

Тільки встиг попрацювати над 1/2 із них. Ви, здається, хочете їх у формі функції, а не одного вкладиша. Отже, все це - функції. Код тестування нижче функції. У Perl.

Greenway:

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

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

Грубо:

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

Каррі:

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

Виступ:

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

Скарб:

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

Я буду працювати 6-9 завтра.


2

ВІП. Зауважте, кількість символів може бути вимкнено через '\n'таwc

[1 Greenway] Mindf * ck, 54 символи

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

Використання: Після введення коду введіть рядок і закінчіть рядок з ^ a (ctr + a), а потім відразу ж введіть свій номер.

Одне застереження: вказане число повинно бути лише від 0-9 (якщо ви бажаєте більшого, значення ascii-48 будь-якого символу, який ви введете, буде використовуватися n)

Знімок екрана:

Знімок екрана

[3 Карі на вечерю] Javascript, 59 символів

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

[4 Spew] BASH, 56 символів

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

[7 час летить, коли ти граєш у гольф] C, 334 символи (412 з макрозначенням)

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

Примітка: ця функція повертає вказівник на двовимірний цілочисельний масив, відформатований так: {3, 55} (для положення годинника на 3, хвилина на 11)

[9 Slacker News] PHP, 246 символів

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

Окрема / оригінальна реалізація в BASH + AWK, 218 символів

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. Грінвей (Хаскелл - 37)

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

2. Десь у грубій частині (Mathematica - 43)

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

3. Карі на вечерю (Лісп - 58)

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

4. Виступ (Матлаб / Октав - 83)

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

5. Полювання за скарбами (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. Міст на річці Квай (Рубі - 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. Час летить, коли ви граєте в гольф (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. Пиломатеріали! (Перехід - 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. Ледачі новини (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

Я шахрай & я ще не грав усіх 9 дірок ... поки що . Тим не менш, ось мій отвір 8, «Пиломатеріал» у Перлі (149 знаків).

Один з моїх колег поставив це як виклик на роботі. Ми з цим веселилися, особливо я, адже у мене найнижчий рівномірний варіант досі!

Наші правила полягали в тому, що це повинен бути окремий сценарій, який виводиться trueабо falseслідує за новим рядком STDOUT, і щоб жоден «шебанг» не був у порядку.

Нижче наведено "мінімізоване" рішення. Я також виклав " суть " того ж, що включає не "мінімізований" код і (часто мучно довгі) пояснення мотивів мого підходу.


$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

Я лінивий змінювати це відповідно до правил змагань Мех, але це прекрасно працює ...

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

Перший код гольфу! (Ще триває робота ...)

1. Грінвей

Мова: Python 3.2.3
Розмір файлу: 23 байти
Код:

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

3. Карі на вечерю

Мова: Python 3.2.3
Розмір файлу: 64 байти
Код:

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

Якщо ви правильно зрозуміли, ви отримаєте два пункти для використання однієї і тієї ж мови два рази. Якщо ви просто робите це для розваги, немає проблем.
Hosch250

@ user2509848 Я не знаю 9 мов для гольфу, тому мені доведеться приєднатися. :( Дякую за голову вгору!
apnorton

Ruby, Perl, Golfscript і Mathematica часто є переможцями
Hosch250

Я знаю лише C ++, з деякими Java та меншими Python 3.2.3. Нічого іншого, крім HTML та CSS (які ніяк не можна використовувати (CSS)).
Hosch250

0

Тут ще одна робота, і я на роботі, тому я повернуся пізніше.

Greenway в Ruby (14 символів, 24 з #alligator ), дзвоніть зf.(c, n)

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

Знімок екрана

Greenway

Десь у грубій у CoffeeScript (38 символів)

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

Знімок екрана

Десь у Грубій

Каррі на вечерю в JavaScript (54 символи)

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

Знімок екрана

Карі на вечерю

Виступ у PHP (111 символів)

Для цього потрібно short_open_tagувімкнути файл конфігураційного PHP. Інакше має бути розмежувач відкриття <?php, @символи використовуються для заглушення PHP_NOTICEпомилок, які викидаються, щоб уникнути включення randв лапки і не чітко оголосити $sзмінну. Це створить квадратну сітку символів ascii між 4 та 30 символами на обох осях.

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

Знімок екрана

Промовляти


Який термінал ви використовуєте?
Олександр Креггс

0

1. Грінвей (Пітон 2: 20)

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

Приклад введення: a("asdf",3)-> string ( asdfasdfasdf)

2. Десь у Грубій (Пітон 2: 47)

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

Приклад введення: b("1,2,333,4,5,6",",",3)-> int (7)

3. Карі на вечерю (Javascript: 61)

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

Приклад введення: function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();-> журнали string(1)до консолі ... 3 рази.

Відповідно до специфікацій, cповертає функцію і фактично не виконує цю функцію сама.

4. Промовляти (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);}}}

Насправді це не перевірено, але має працювати.


0

Деякі відступи залишаються недоторканими для читання, але їх було вилучено під час підрахунку символів. Загальна сума - близько 1227 . Або ні, я забув проблему. 1486 1465 символів.

1. MIPS ASM (55 символів)

#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. Схема (52 символи)

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

3. F # (39 символів)

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

4. Powershell (133 символів)

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 символів)

#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 символів)

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. Хаскелл ( 318 306 символів)

Я шукав привід спробувати Haskell. Я думав, що я розумний, генеруючи список позицій за допомогою комбінацій чисел, але з кількістю знаків, які знадобилися, я міг би важко зашифрувати прокляту річ. Ну добре. Код жорстокий, але писати було весело.

редагувати: Виправлено, щоб він правильно повертав хвилини.

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. Луа (259 годин)

Я здивовано виявив, що рядки не підтримують індексацію стилів масиву, тому мені довелося покладатися на підряд.

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. Пітон (187 символів)

Завдяки grc / Tyroid за скорочувач 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:]]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.