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을 호출하는 함수는 어디에 있습니까 ; 의 반환 값은 어디 입니까ynnx

  4. 분출 (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
    

    위의 숫자 크기에 따라 공백이 만들어 졌는지 확인하십시오. 3 자리 긴 숫자의 경우 아래 줄의 숫자 사이에 4 개의 공백이 필요합니다.

    Catch : 어딘가에, 코드는 바지를 철자해야합니다 (영숫자 이외의 구분자가 하나 이상 있어야 함). tr(ou,se)(rs)

  7. 골프를 치면 시간이 난다 (1157)

    f(p:string) -> [h, m]p아날로그 시계의 ASCII 표현이 포함 된 파일을 읽습니다 . 여기서 시침은 한 줄로, 분은 2로 표시됩니다. 시계에 표시된시와 분의 두 가지 요소가 포함 된 목록을 출력합니다. 한 손만 보이는 경우 두 점이 해당 위치를 가리키는 것으로 가정합니다.

    손에 가능한 모든 조합이 있습니다.

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

    이 위치는 각각 (12, 1, 3, 5, 6, 7, 9, 11)입니다. 시계 문자판의 다른 문자가 공백이라고 가정하십시오.

  8. 재목! ()

    f(p:string) -> b:boolean 여기서 p는 아스키 건물이있는 파일의 경로입니다. 그 아래에 공백이있는 블록이 떨어집니다. (슬래시를 제외하고 마주 보는 방향과 반대 방향으로 안정적인 블록이 있으면 제자리에 유지됩니다). 건물이 구조적으로 완전한 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. 공백이 아닌 모든 블록은 단단하고 슬래시 이외의 것으로 간주되며 모두 떨어집니다.

    구조적으로 안전한

    ____
    |/\|
    |  |
    

    안전하지 않음

    |__
      | 
      |
    

    안전한 버전

    |__
    \\| 
      |
    
  9. 슬랙 커 뉴스 (218)

    f(s:string, r:string, p:string) Hacker News에서 상위 20 개 스토리의 제목을 가져와의 모든 인스턴스를 s로 변경 r한 다음의 p각 제목이 h1 요소 내에 포함 된 의 HTML 파일에 새 제목을 씁니다 .

    출력 된 파일은 다음과 같아야합니다

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

    캐치 :

    • HN API를 사용할 수 없습니다.
    • 정규식을 사용할 수 없습니다.
    • 코드의 어느 곳에도 괄호를 사용할 수 없습니다.

채점

  • 문자 수는 올바르게 컴파일하고 실행할 함수의 길이입니다. 그러나 여전히 수입을 포함한 전체 코드를 제출해야합니다.
  • 제출 한 모든 반복 언어에 대해 + 10 % (예를 들어, 3 가지 솔루션에 Ruby를 사용하는 경우 최종 점수에 1.2가 곱해집니다). 동일한 언어의 다른 버전은 여전히 ​​동일한 언어로 계산됩니다.
  • 파는 각 홀의 평균 점수입니다.
  • 한 가지 답변으로 솔루션을 제출하십시오.
  • 전체 점수는 문자 수 + 언어 페널티입니다.

트로피

  • 골드 자켓 -( @Sprigyig -1290) 최저 점수
  • 슈터 -( @Sprigyig -9) 가장 많이 사용되는 언어
  • 벙커 -홀에서 가장 높은 점수
  • 비행기에서 뱀 -( @AsksAnyway -1727) 단일 솔루션에서 가장 높은 파이썬 문자 제출
  • 좋은 부품 -( @AsksAnyway -255) 단일 솔루션에서 가장 높은 JS 문자 수
  • Shakey Steve- 인터페이스를 사용하는 가장 짧은 솔루션
  • 당신은 여기에서 온 것이 아닙니다 -언어가 가장 짧은 유일한 언어 솔루션 인 위키피디아 페이지가 가장 짧습니다.
  • Happy Gilmoore -( @AsksAnyway -31) 코드에 'alligator'라는 단어가있는 가장 짧은 솔루션.
  • Unicycling Dwarf Magic -9 개의 제출 소스 파일의 기본 확장자는 옥스포드 사전의 단어를 완벽하게 표현한 것입니다.

9 홀을 모두 완료 한 후에 만 ​​트로피를받을 수 있습니다


제출물

  1. @ 스프 리지 그 1290
  2. @Firefly 1320
  3. @grc 1395
  4. @ 트레버 M 1465
  5. @C 기어 하트 1654
  6. @ 가이 서튼 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 vs VB.Net vs 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. 자바 스크립트-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과 어떤 관련이 있습니까? 어떤 이유로 단어 수에 포함 된 것 같습니다.
Dhara

1
@Dhara Happy Gilmoore 트로피를위한 것입니다 : "코드에 'alligator'라는 단어가있는 가장 좋은 솔루션입니다."
PhiNotPi

# 9는 꺾쇠 괄호 ( i<i<42)를 사용합니까, 아니면 연산자로만 사용하는 한 허용됩니까?
Christopher Creutzig

@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))). 그러나 정수가 아닌 함수를 받아들이는 데 과부하가 걸리는 경우 반복 횟수를 얻기 위해 입력에서 함수를 실행합니다. 불행히도 우리는 작업에 대한 피연산자를 뒤집어 야합니다. 그렇지 않으면 우리는 consise answer가 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테스트하고 싶다면 추가 하거나 무언가를 원할 것입니다. 내 리눅스 상자에서 파일을 작성하기 위해 파일을 플러시 할 필요는 없었지만 (프로그램 종료시 자동으로 플러시 될 것 같음) 표준 준수를 위해서는 플러시해야한다고 확신합니다. fflush(f);여기에 카운트 에 추가 하십시오.

5. 하스켈 (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}}

아마 더 많은 골프를 쳤다. 나는 Go를 거의 알지 못한다.

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__
뱀과 커피를 위해

불행히도 stdout에 인쇄하지 않는 @SnakesandCoffee. :(
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. 분출-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. Bridge-Python, 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]

행이 5 자 너비로 채워져 있다고 가정합니다. 두 번째 들여 쓰기 수준에 탭을 사용합니다.

8. 목재-Python, 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

url shortener 아이디어에 대한 Tyzoid에게 감사드립니다.


파이썬에 대해 많은 감명을받을 수 있습니다.
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의 가치가 있습니다.

거친 곳, 파이썬 59

나는 쉬운 문제로 그런 좋은 언어를 다 써 버려서는 안된다. 또한 이것이 어떻게 언어의 indexOf 함수 계열의 일부가 아닌가? 나는 항상 이것이 필요한 것 같습니다 ...

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

저녁 카레, Lisp 61

나는 대학에서 일주일 이래로 lisp를 만지지 않았습니다 ....

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

분출, 배쉬 / 쉘 유틸리티 102

내 bash-foo는 처음부터 그렇게 좋은 적이 없었습니다. 나중에 이것으로 바이올린을하겠습니다. 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

아마도 C 친화적 인 문제 중 하나 일 것입니다. 반환 배열 포인터를 인수로 사용하여 "두 정수 반환"을 해석했습니다. 경고? 무슨 경고? 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;}

강 Kwai, 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

당신은 자바를 간결하게하기 위해 너무 많은 일을 할 수 있습니다 ... 시계가 공백으로 채워져 각 줄의 길이가 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};}

재목! 자바 스크립트 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}

슬랙 커 뉴스, 루비 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

이것은 대단한 답변 일뿐만 아니라 대단한 읽기를 제공합니다. 잘 했어!
Dan Prince

고마워, 나는 루비와 C #을 바꾼 것이 조금 덜 흥미 롭다고 생각한다. 닷넷의 미친 문자열 분할에 더 이상 고함 없다 =)
Sprigyig

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- 자바 스크립트 (~ 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- 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는 앵글 버팀대를 사용하는데,이 구멍의 규칙에 위배됩니다.
Rik Smith-Unna

@RichardSmith : 고마워요. 그 중 하나를 고쳐야합니다.
Guy Sirton

1
홀 # 3에주의하여, x ()가 각 함수 호출에서 동일한 숫자를 반환한다고 보장 할 수 없습니다!
Tyzoid

@ Tyzoid : 캡처하는 것을 고려 중입니다 ... 사양의 내 가정 / 해석이 맞습니다.
Guy Sirton

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
}

이 프로 크를 30 분 안에 작성하는 것이 골프 코드를 올바르게 설계하는 것보다 훨씬 흥미 롭기 때문에 대부분 테스트되지 않았습니다. 즐겨!


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 저녁 카레] 자바 스크립트, 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} 형식의 2 차원 정수 배열에 대한 포인터를 반환합니다 (3의 시계 위치는 3, 11은 분).

[9 슬랙 커 뉴스] 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. 그린 웨이 (Haskell-37)

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

2. 거친 곳 (Mathematica-43)

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

3. 저녁 카레 (Lisp-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. 콰이강 다리 (Ruby-192)

def f(l)
    trouse="\n%s"
    rs = l[0].to_s
    for i in 1..l.length-1
        s = "/%+d\\"%(l[i]-l[i-1])
        print " "*l[i-1].to_s().length+s
        rs += " "*s.length+"%d"%l[i]
    end
    puts trouse%rs
end

7. 골프를 치면 시간이 흐른다 (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 홀을 모두 플레이하지 않았습니다 ... 아직 . 그럼에도 불구하고 여기 Perl의 내 구멍 8, "Timber"솔루션이 있습니다 (149 자).

저의 동료 중 한 명이 이것을 직장에서의 도전으로 제시했습니다. 우리는 지금까지 가장 낮은 파 솔루션을 가지고 있기 때문에 특히 나에게 재미있었습니다!

우리의 규칙은 에 대한 개행을 출력 true하거나 false따라온 독립형 스크립트 여야하고 STDOUT"세방"은 괜찮다는 것이 었습니다.

아래는 "최소화"솔루션입니다. 나는 또한 "올려 요점 비"축소 된 "코드 및 내 접근 뒤에 추론 (종종 tortuously 긴) 설명을 포함 동일한의"를.


$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

경쟁 규칙 Meh에 따라 수정하기에는 너무 게으르지 만 잘 작동합니다 ...

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

Java와 Python 3.2.3이 적은 C ++ 만 알고 있습니다. HTML과 CSS 외에는 아무 것도 사용할 수 없습니다 (CSS).
Hosch250

0

여기서 또 다른 작업이 진행 중이며, 일을하고있어서 나중에 다시 가겠습니다.

Ruby의 Greenway (14 자, #alligator 포함 24 자 )f.(c, n)

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

스크린 샷

녹색 방법

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위해 발생하는 오류 를 침묵시키는 데 사용됩니다 . 그러면 두 축 모두에서 4 ~ 30 자 사이의 ASCII 문자 사각형 격자가 생성됩니다.rand$s

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

스크린 샷

내뿜다


그 터미널은 무엇을 사용하고 있습니까?
Alexander Craggs 2009 년

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. 저녁 카레 (자바 스크립트 : 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 ++ ( 184152 문자)

#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. 하스켈 ( 318306 자)

하스켈을 시험해 볼 변명을 찾고있었습니다. 나는 숫자의 조합을 통해 위치 목록을 생성하여 영리하다고 생각했지만 문자 수를 사용하면 빌어 먹을 것을 하드 코딩 할 수있었습니다. 오 잘 코드는 끔찍하지만 어쨌든 작성하는 것은 재미있었습니다.

편집 : 분을 올바르게 반환하도록 수정되었습니다.

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

url shortener를위한 grc / Tyroid에게 감사합니다.

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:]]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.