2907 + штраф 60%
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:]]
Использование: 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
e.g. 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&¬ 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
-> 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);
}
Хэппи Гилмур
#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;}
Function f($p){
$r=(Get-Random)0
$z="";for($b=$r*$r;$b -gt 0;$b--){$z+=[char](33+(Get-Random)%94);if($b%$r -eq 1){"$z">>$p;$z=""}}
}
Бункер Хорошие детали
let f x y=fun()->for i in 1..x() do y()
(define (f t s n)(list-ref(string-search-all s t)n))
#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
#include<fstream>
using namespace std;void d(string f){ofstream o;int i=rand();int j=rand();o.open(f);for(int x=0;x<i;x++){for(int y=0;y<j;y++){o.put(rand()%256);}}}
Змеи в самолете
c
string(1)
||answer||Мне еще многое предстоит сделать, чтобы улучшить этот результат... Ну ладно, по крайней мере, я избежал штрафов за повторную лексику. :-)
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
«Очевидное» решение.
function c(a,b){d=a();return function(){while(d){d--;b()}};};
Находит индекс несколько нетрадиционным способом, подсчитывая длину подстроки перед ним.
b("1,2,333,4,5,6",",",3)
Встроенный союз def b(t,s,n):return len(s.join(t.split(s)[:n]))
raises a function to a power (i.e. repeats a function a given number of times). That is, asdfasdfasdf
. Однако он перегружен и принимает функции, а не целые числа, и в этом случае он запускает функцию на входе, чтобы получить количество повторений. К сожалению, нам нужно перевернуть операнды для задачи, иначе мы получили бы краткий ответ. a("asdf",3)
.
def a(x,n):print x*n
Эта задача оставляет довольно много места для интерпретации и злоупотреблений: можно ли просто вывести случайный печатаемый символ ASCII и сказать, что это прямоугольник произвольного размера с размерами из набора {1}? Вероятно, нет. В любом случае, я пошел с простым <? @$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);
but in reality you probably want to add $s
или что-то еще, если вы хотите это проверить. В моем Linux-системе мне не нужно было сбрасывать файл, чтобы он мог быть записан (полагаю, он сбрасывается автоматически при выходе из программы), но я почти уверен, что вам нужно сбросить его, чтобы он соответствовал стандартам, так что не стесняйтесь бесплатно добавить rand
to the count here.
PHP_NOTICE
Мне нравится повторяющийся шаблон поиска строки и столбца (абстрагируемый с помощью @
).
<?php
Использует несколько возвращаемых значений и рекурсию для вычисления различий. Мне потребовалось несколько символов, чтобы точно соответствовать примеру вывода (добавив везде нужное количество пробелов).
short_open_tag
Вероятно, можно было бы играть в гольф гораздо больше; Я едва знаю Го.
f=function(x,y){return function(){for(i=x();i--;)y()}}
Немного дешево, поскольку у меня уже есть JS. Ну что ж. Возвращает ложное значение (а именно, f=(t,s,n)->t.split(s,n).join(s).length
) or a truthy value (namely, f=->c,n{p c*n}#alligator
), чтобы указать ответ.
f.(c, n)
(Для удобства чтения были добавлены новые строки после каналов.) Обходить ограничения с помощью оболочки было весело. Я понимаю, что, вероятно, есть лучший способ сделать def f(x,y):
def g():
for i in [1]*x(): y()
return g
, but this was what I came up with anyway.
996 символов + штраф 40%
1. Greenway — Haskell, 19 символов.
def f(c,n): print(c*n)
Использование:
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')
2. Rough – PHP, 72 символа.
$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
'
3. Карри — JavaScript 1.8, 45 символов
STDOUT
4. Извержение – J, 43 символа
false
Использование:
true
5. Сокровище – J, 64 символа.
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'))
Использование:
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
}
6. Мост – Python, 166 символов.
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];});}
7. Время — Python, 205 символов.
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
Предполагается, что строки дополнены пробелами и имеют ширину в пять символов. Использует табуляции для второго уровня отступов.
8. Древесина – Питон, 190 символов.
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;}
9. Бездельник — Python, 192 символа
function x(f)
save f arrayfun(@char,randi(255,randi(255),randi(255)))
endfunction
Спасибо Tyzoid за идею сокращения URL-адресов.
Редактировать: Думаю, я просто отправлю это как есть: всего 1290, язык не повторяется.
Гринвей, C# 53
(defun f(x y)(lambda()(dotimes(c(funcall x))(funcall y))))
Я решил поменять языки на №1 и №9. Всего стоит 30 здесь за сотню потом.
Где-то в грубой форме, Python 59
Мне действительно не следовало использовать такой хороший язык для решения простой проблемы. Кроме того, как это не является частью семейства функций indexOf какого-либо языка? Кажется, мне это всегда нужно...
f[t_,s_,n_]:=StringPosition[t, s][[n+1, 1]]
Карри на ужин, Лисп 61
Я не прикасался к шепелявости с той недели в колледже....
f x y=do print(concat(replicate x y))
Утилиты Spew, Bash/shell 102
Мой bash-foo никогда не был таким уж хорошим. Я поиграюсь с этим позже. Кстати, если вы хотите, чтобы процесс завершился быстрее, переключите его на /dev/urandom.
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";};
Охота за сокровищами, C 113
Вероятно, одна из наиболее дружественных к C проблем. Я интерпретировал «возврат двух целых чисел» как использование указателя возвращаемого массива в качестве аргумента. Предупреждения? Какие предупреждения? int* так же хорош, как FILE* =p.
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");}}
Мост через реку Квай, Перл 207
Я начал изучать Perl, пока писал эту книгу. (Лучше поздно, чем никогда!) Я пришел к этому, желая совершить героическую работу с регулярными выражениями, поэтому я формирую строку как оба слоя моста вместе, а затем использую регулярные выражения с заменой пробелов, чтобы сформировать две разные строки.
#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;}
Время летит, когда вы играете в гольф, Java 297
Вы можете сделать так много, чтобы сделать Java кратким... Предполагается, что часы дополнены пробелами, поэтому каждая строка имеет длину 5 пробелов.
f(){ dd if=/dev/urandom of="$1" count=$((RANDOM%30+2));}
Древесина! Javascript 201
Он запускается в консоли Chrome. Я не даю никаких гарантий в другом месте =p. Требуется, чтобы строки были дополнены пробелами до длины самой длинной строки. Я считаю, что это разумное требование к ASCII-арту.
function f(x,y){return function(){n=x();while(--n!=0)y();}}
Новости бездельника, Руби 197
n
||answer||Было весело немного прикоснуться к нескольким языкам...
Количество символов получено после удаления ненужных пробелов и новых строк, но отправленные материалы в основном остаются читаемыми. Поскольку речь идет о сочетании функций и программ, я включил только тело функции там, где это необходимо... Также была допущена некоторая свобода в отношении значения слова "возврат"...
Общий ~1719
1- Питон (~20)
>>+[+>,-]<[<]>,<<++++++++[>>------<<-]>>[>[.>]<[<]>-]
2- С (~109)
wc
Читабельная версия:
'\n'
3- Javascript (~56)
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);
4- Рекс (~136)
use Crypt::PRNG qw(random_string_from irand);
sub f{open($o,">$_[0]");$m=(irand)+1;map{printf $o "%s\n",random_string_from(['A'..'z'],$m)}(1..$m)}
#test
&f('/tmp/t');
5- Скала (~290)
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);
6- С++ (~355)
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);
7- Идти (~301)
Обратите внимание, что для этого необходимо, чтобы часы были дополнены (т.е. все строки имеют одинаковую длину).
sub f{print$_[0]x$_[1]}
#test
&f("abc",5);
8- Руби (~259)
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
}
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
||answer||Не совсем для гольфа, но вот немного Tcl, поскольку языку нужно больше любви:
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
В основном непроверенные, потому что писать эти процедуры за полчаса гораздо интереснее, чем пытаться правильно спроектировать код для гольфа. Наслаждаться!
Успело поработать только над половиной из них. Кажется, вы хотите, чтобы они были в форме функции, а не в виде одного лайнера. Итак, все это функции. Код тестирования ниже функции. В Перле.
Гринвей:
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
}
Грубый:
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;
}
Карри:
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)
}
Извержение:
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
Сокровище:
function(x, y) {return function() {for(i=0; i<x(); i++) y();}}
Я буду работать завтра с 6 до 9.
#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);
}
and 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);}
def f(c, n):
print c*n
Использование:
После написания кода введите строку и завершите ее знаком ^a (ctr+a), а затем сразу после этого введите свой номер. 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
)
Одно предостережение: указанное число должно быть только от 0 до 9 (если вы хотите большее значение, в качестве значения будет использоваться значение ascii-48 любого введенного вами символа).
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}
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};}
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}
[7 Время летит, когда вы играете в гольф] C, 334 символа (412 с макроопределением)
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;}
{3, 55} (для положения часов на 3, минут на 11)
f(){
c=$(($RANDOM%9+9))
for i in $(seq $c);do
echo `tr -cd [:print:]</dev/random|head -c$c`>>$1
done
}
||answer||(defun f (c g)(loop for i from 1 to(funcall c)do(funcall g)))
def f(t,s,n):return sum(map(len,t.split(s))[:n+1])+n*len(s)
void g(string s,int n){while(n-->0)Console.Write(s);}
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
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))
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)or 12
z[a[2+l].count('-')]=3+6*l
print[z[1]or z[2],z[2]*5%60]
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])))
'file.txt' f 'c'
f=:4 :0
a=.freads x
b=.1+a i.u:10
c=.a i.y
d=.<.c%b
e=.d,c-b*d
)
||answer||8. Древесина! (Идти - 329) 9. Новости бездельника (Python — 330)Я мошенник и не сыграл все 9 лунок…
еще
. Тем не менее, вот моя дырка 8, решение «Timber» на Perl (149 символов). f 'file.txt'
or f=:3 :'((33+?(1+?2#100)$1#93){a.)fwrites y'
Один из моих коллег назвал это вызовом на работе. Нам это понравилось, особенно мне, так как на данный момент у меня есть решение с самой низкой номинальной стоимостью! f=function(x,y)function(){for(i=x();i--;)y()}
, and that no “shebang” was OK.
Наши правила заключались в том, что это должен был быть отдельный скрипт, выводящийза которым следует новая строкаНиже приведено «минимизированное» решение. Я также поставил «
<?
function f($t,$s,$n){for($i=-1;$n--;$i=strpos($t,$s,++$i));return$i;}
||answer||суть
> f "hello" 5
["hello","hello","hello","hello","hello"]
||answer||» того же, что включает в себя не «минимизированный» код и (часто мучительно длинные) объяснения причин моего подхода.
Мда, но работает нормально...
Гольф по первому коду! (Все еще в работе...)
1. Гринвей
f c n=replicate n c
Размер файла: 23 байта
Код:
3. Карри на ужин
$2,$4,$6,...
||answer||Язык: Питон 3.2.3
Размер файла: 64 байта Код: Здесь идет еще одна работа, я на работе, так что вернусь позже.Гринвей 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
}
1
на Ruby (14 символов, 24 с
#аллигатор ), позвоните с
undefined
Скриншот
Где-то в грубом на CoffeeScript (38 символов)
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
Скриншот
Карри на ужин на JavaScript (54 символа)
Скриншот 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}}
in the PHP configuration file to be enabled. Otherwise the opening delimiter should be 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
извергать h
symbols are used to silence 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
на PHP (111 символов) fflush(f);
in quotes, and for not explicitly declaring the %9
Это требует
rand()
,
ошибки, которые выдаются для предотвращения включения#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);}
Скриншот f=:^:
-> string( f^:3 y = f (f (f y)))
)
^:
1. Гринвей (Питон 2:20) f=:2 :'v^:u'
-> int(7)
f=(t,s,n)=>t.split(s).slice(0,n).join(s).length
2. Где-то в грубой форме (Python 2:47) def f(c,n):print(c*n)
-> logs 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]
Пример ввода:
3. Карри на ужин (Javascript: 61) 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
returns a function, and doesn't actually execute that function itself.
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]
на консоль... 3 раза.
Согласно спецификациям,4. Извержение (C++11: 171)
На самом деле это не проверялось, но должно работать.
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
def f(p,c):
for y,d in enumerate(open(p).readlines()):
x=d.find(c)
if x+1:return x,y
Некоторые отступы оставлены для удобства чтения, но они были удалены при подсчете символов. Итого около 1227. Или нет, забыл проблему. 1486 1465 символов.
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])
1. MIPS ASM (55 символов)
/*
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;
}
2. Схема (52 символа)
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. F# (39 символов)
testtesttest
4. Powershell (133 символа)
5. C++ (184 152 символа)
6. C# (291 282 символа)
"test" 3 a
7. Haskell (318 306 символов)
Я искал повод попробовать Haskell. Я думал, что поступил умно, сгенерировав список должностей с помощью комбинаций чисел, но с учетом количества символов я мог бы жестко запрограммировать эту чертову штуку. Ну что ж. Код ужасен, но писать его все равно было весело.
c n a
изменить: исправлено, поэтому он правильно возвращает минуты.
8. Луа (259 символов)
{*}:a;lligator