Испытание на 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. Spew (92)

    f(p:string) Записывает в файл в pи заполняет его произвольным размером прямоугольника случайных символов (ascii).

  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. Timber! ()

    f(p:string) -> b:boolean Где p - путь к файлу со встроенным ascii. Блоки с пробелами под ними будут падать. (За исключением слешей, которые остаются на месте, если есть устойчивый блок в направлении, противоположном тому, как они смотрят). Если здание конструктивно цельное, верните true, в противном случае верните false. Все блоки без пробелов считаются сплошными и, кроме слешей, все они падают

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

    ____
    |/\|
    |  |
    

    Небезопасный

    |__
      | 
      |
    

    Безопасная версия

    |__
    \\| 
      |
    
  9. Новости бездельника (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

    Поймать :

    • Вы не можете использовать API HN.
    • Вы не можете использовать Regex.
    • Вы не можете использовать угловые скобки где-либо в вашем коде.

счет

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

Трофеи

  • Золотая куртка - ( @Sprigyig - 1290) Самый низкий общий балл
  • Shooter - ( @Sprigyig - 9) Большинство используемых языков
  • Бункер - большинство выше номинала на любой лунке
  • Змеи на самолете - ( @AsksAnyway - 1727) Максимальная подача символов Python в одном решении
  • Хорошие части - ( @AsksAnyway - 255) Максимальное количество символов JS в одном решении
  • Shakey Steve - самое короткое решение, использующее интерфейсы
  • Вы не сошли с ума - самое короткое уникальное языковое решение, которое имеет самую короткую страницу википедии.
  • 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. @ Гай Сиртон 1719
  7. @AsksAnyway 4651

2
@anorton <&>
Дэн Принс

1
Аналоговые часы имеют 12 позиций для каждой руки, но вы даете нам только 8. Как это работает?
Кевин - Восстановить Монику

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

1
@anorton 1/5, 5/25, 7/35, 11/55
Дэн Принц

2
Будут ли разные версии или разновидности языка считаться «разными» в целях оценки? например, Python 2 против Python 3? Visual Basic против VB.Net против VBScript? Как насчет надмножеств или почти надмножеств, таких как C против C ++? Извините за педантизм, но это код-гольф! :-)
Даррен Стоун

Ответы:


11

Счет: 4651

2907 + 60% штрафа

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

{*}:a;lligator

Использование: c n aнапример "test" 3 a->testtesttest

звезда Счастливого Гилмура

2. Python - 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;
}

звездаБункер звездаGood Parts

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

Счет: 1 394,4

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

1. Greenway - Haskell, 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. Spew - 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. Время - Питон, 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. Slacker - Python, 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, без повторений языка.

Гринуэй, C # 53

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

Я решил поменять языки с № 1 и № 9. Всего стоит 30 здесь для сотен позже.

Где-то в грубой, Python 59

Я действительно не должен был использовать такой хороший язык для легкой проблемы. Кроме того, как это не входит в семейство функций indexOf какого-либо языка? Мне кажется, это всегда нужно ...

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

Карри на ужин, Лисп 61

Я не прикасался к Лису с той недели в колледже ...

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

Spew, Bash / shell утилит 102

Мой bash-foo никогда не был так хорош для начала. Я возлюсь с этим позже. Кстати, если вы хотите, чтобы он заканчивался быстрее, переключите его на / 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

Вероятно, одна из наиболее дружественных проблем. Я интерпретировал «вернуть два целых числа» как взять указатель на возвращаемый массив в качестве аргумента. Предупреждения? Какие предупреждения? Int * так же хорош, как и 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;}

Мост через реку Квай, Perl 207

Я начал изучать Perl, когда писал этот. (Лучше поздно, чем никогда!) Я пришел к этому, желая создать героику регулярных выражений, поэтому я формирую строку как оба слоя моста вместе, а затем использую регулярные выражения с заменами пробелов для формирования двух разных строк.

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 кратким ... Предполагается, что часы заполнены пробелом, поэтому каждая строка имеет 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};}

Timber! Javascript 201

Он работает в консоли Chrome. Я не даю никаких гарантий в другом месте = р. Требуется, чтобы линии были пробелами по длине самой длинной строки. Я чувствую, что это разумный запрос искусства 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 =)
Sprigyig

4

Было весело прикоснуться к нескольким языкам немного ...

Количество символов, полученное после удаления ненужных пробелов / новых строк, но представление в основном оставалось читаемым Поскольку речь идет о сочетании функций и программ, я включил в них только тело функции, где это необходимо ... Кроме того, была дана некоторая свобода с тем, что означает "возврат" ...

Итого ~ 1719

1- Питон (~ 20)

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

2- С (~ 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- 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- Скала (~ 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- С ++ (~ 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)

Обратите внимание, что это требует дополнения часов (т.е. все строки имеют одинаковую длину).

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 - взлом 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

1
Хорошо, но ваш # 9 использует угловые скобки, что противоречит правилам для этой дыры.
Рик Смит-Унна

@RichardSmith: Спасибо ... Я должен это исправить.
Гай Сиртон

1
Осторожно с отверстием № 3, нет гарантии, что x () будет возвращать один и тот же номер при каждом вызове функции!
Tyzoid

@ 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 из них. Вы, кажется, хотите их в форме функции, а не одного вкладыша. Так что все это функции. Тестирование кода ниже функции. В перл.

Зеленый путь:

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

WIP. Обратите внимание, что количество символов может быть отключено из-за '\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. Spew (Matlab / Octave - 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. Древесина! (Go - 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

Я мошенник, и я не сыграл все 9 лунок ... пока . Тем не менее, вот моя дыра 8, решение «Timber» в Perl (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

Скриншот

Зеленый путь

Где-то в Rough в 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. Где-то в Грубом (Python 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. Изверг (С ++ 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. Haskell ( 318 306 символов)

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

редактировать: исправлено, поэтому он правильно возвращает минуты.

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

Я был удивлен, обнаружив, что строки не поддерживают индексацию стиля массива, поэтому мне пришлось положиться на 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. Питон (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.