9 Hole Challenge [ปิด]


65

การแข่งขัน 9 Hole Challenge

  • 9 รหัสกอล์ฟท้าทายของความยากต่างกัน
  • บทลงโทษสำหรับการใช้ภาษาเดียวกันมากกว่าหนึ่งครั้ง
  • คำถามจะได้รับการอัปเดตด้วย pars ผู้ชนะในหลุมและผู้ชนะรางวัล

    นี่มาจากการแข่งขันที่ฉันมีกับเพื่อนบางคนมันไม่ใช่รูปแบบปกติ แต่ฉันหวังว่าพวกคุณบางคนจะประทับใจกับสปินที่แตกต่างกัน ความท้าทายกฎและถ้วยรางวัลด้านล่าง

หลุม

  1. กรีนเวย์ (24)

    f(c:string, n:integer)
    พิมพ์เส้นที่มีกรณีของnc

  2. ที่ไหนสักแห่งใน Rough (73)

    f(t:string, s:string, n:integer) -> i
    ในกรณีที่iเป็นดัชนีของnthอินสแตนซ์ในst

  3. แกงสำหรับอาหารค่ำ (6235)

    f(x:function, y: function) -> g ในกรณีที่gเป็นฟังก์ชั่นที่จะเรียกy, nครั้ง; ซึ่งnเป็นค่าตอบแทนของx

  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 หลักระหว่างตัวเลขในบรรทัดด้านล่าง

    การจับ: บางรหัสของคุณต้องสะกดกางเกง (ต้องมีตัวคั่นที่ไม่ใช่ตัวอักษรและตัวเลขอย่างน้อย 1 ตัวเป็นต้น tr(ou,se)(rs)

  7. เวลาผ่านไปเมื่อคุณเล่นกอล์ฟ (1157)

    f(p:string) -> [h, m] อ่านไฟล์ที่pมีการแทน ASCII ของนาฬิกาอะนาล็อกที่เข็มชั่วโมงแสดงด้วยหนึ่งบรรทัดและนาทีสอง แสดงรายการที่มีสององค์ประกอบ: ชั่วโมงและนาทีที่แสดงบนนาฬิกา หากมองเห็นเพียงมือเดียวให้ถือว่าทั้งสองชี้ไปที่ตำแหน่งนั้น

    นี่คือชุดค่าผสมที่เป็นไปได้ทั้งหมดสำหรับมือ

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

    ตำแหน่งเหล่านี้ตามลำดับคือ (12, 1, 3, 5, 6, 7, 9, 11) สมมติว่าตัวละครอื่น ๆ ภายในหน้าปัดเป็นช่องว่าง

  8. ท่อนซุง! ()

    f(p:string) -> b:boolean โดยที่ p คือพา ธ ไปยังไฟล์ที่มีสิ่งปลูกสร้าง ascii การบล็อกที่มีพื้นที่สีขาวข้างใต้จะตก (ยกเว้นจากเครื่องหมายทับซึ่งอยู่ในสถานที่หากมีบล็อกที่มั่นคงในทิศทางตรงกันข้ามกับวิธีที่พวกเขาเผชิญ) ถ้าสิ่งปลูกสร้างนั้นเป็นส่วนประกอบสำคัญที่ส่งกลับจริงมิฉะนั้นคืนเท็จ บล็อกที่ไม่ใช่ช่องว่างทั้งหมดจะถูกนับว่าเป็นของแข็งและอื่น ๆ กว่าเครื่องหมายทับพวกเขาทั้งหมดตก

    ปลอดภัยต่อโครงสร้าง

    ____
    |/\|
    |  |
    

    ไม่ปลอดภัย

    |__
      | 
      |
    

    รุ่นที่ปลอดภัย

    |__
    \\| 
      |
    
  9. ข่าวสแลกเกอร์ (218)

    f(s:string, r:string, p:string) รับชื่อเรื่อง 20 อันดับแรกบน Hacker News และเปลี่ยนอินสแตนซ์ทั้งหมดของsเป็นrจากนั้นเขียนชื่อเรื่องใหม่ไปยังไฟล์ html ที่pโดยที่ชื่อแต่ละเรื่องมีอยู่ในองค์ประกอบ h1

    ไฟล์ที่ส่งออกควรมีลักษณะดังนี้

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

    จับ :

    • คุณไม่สามารถใช้ HN api
    • คุณไม่สามารถใช้ Regex
    • คุณไม่สามารถใช้วงเล็บปีกกาที่ใดก็ได้ในรหัสของคุณ

เกณฑ์การให้คะแนน

  • จำนวนตัวละครคือความยาวของฟังก์ชั่นที่จะรวบรวมและเรียกใช้อย่างถูกต้อง อย่างไรก็ตามคุณยังคงต้องส่งรหัสเต็มรวมถึงการนำเข้า
  • + 10%สำหรับทุก ๆ ภาษาที่คุณส่งซ้ำ (เช่นถ้าคุณใช้ Ruby เป็นเวลา 3 โซลูชั่นคะแนนสุดท้ายของคุณจะถูกคูณด้วย 1.2) การนับภาษาเดียวกันรุ่นต่าง ๆ ยังคงนับเป็นภาษาเดียวกัน
  • พาร์จะเป็นคะแนนเฉลี่ยของแต่ละหลุม
  • ส่งคำตอบของคุณในคำตอบเดียว
  • คะแนนโดยรวมของคุณคือการนับตัวละครของคุณ + การลงโทษทางภาษาของคุณแล้วปัดเศษขึ้น

ถ้วยรางวัล

  • Gold Jacket - ( @Sprigyig - 1290) คะแนนโดยรวมต่ำที่สุด
  • Shooter - ( @Sprigyig - 9) ภาษาส่วนใหญ่ที่ใช้
  • บังเกอร์ - คะแนนสูงสุดที่เสมอกันของทุกหลุม
  • Snakes on a Plane - ( @AsksAnyway - 1727) การส่งตัวละครหลามที่สูงที่สุดในโซลูชันเดียว
  • ส่วนที่ดี - ( @AsksAnyway - 255) จำนวนตัวอักษร JS สูงสุดนับในโซลูชันเดียว
  • Shakey Steve - ทางออกที่สั้นที่สุดที่ใช้อินเตอร์เฟส
  • คุณไม่ได้อยู่ที่นี่ - การแก้ปัญหาภาษาที่สั้นที่สุดที่เป็นภาษานั้นมีหน้าวิกิพีเดียสั้นที่สุด
  • Happy Gilmoore - ( @AsksAnyway - 31) ทางออกที่สั้นที่สุดที่มีคำว่า 'alligator' ในรหัส
  • Unicycling Dwarf Magic - ส่วนขยายเริ่มต้นของไฟล์ต้นฉบับ 9 ไฟล์ของคุณเป็นแอนนาแกรมที่สมบูรณ์แบบของคำในพจนานุกรม Oxford

คุณมีสิทธิ์ได้รับถ้วยรางวัลเมื่อคุณเล่นครบทั้ง 9 หลุม


การส่ง

  1. @Sprigyig 1290
  2. @Firefly 1320
  3. @grc 1395
  4. @ เทรเวอร์ M 1465
  5. @C Gearhart 1654
  6. @Guy Sirton 1719
  7. @AsksAnyway 4651

2
@anorton <&>
Dan Prince

1
นาฬิกาอะนาล็อกมี 12 ตำแหน่งสำหรับแต่ละมือ แต่คุณให้ 8 เราเท่านั้นมันทำงานอย่างไร
เควิน

1
@DanPrince คุณต้องการให้/ตำแหน่งอ้างอิงถึง 1 โมงเช้าหรือ 2 นาฬิกา? (และในทำนองเดียวกันสำหรับส่วนที่เหลือของเส้นทแยงมุม)
apnorton

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

2
ภาษาหรือรสชาติที่แตกต่างกันจะถูกพิจารณาว่า "แตกต่าง" สำหรับการให้คะแนน เช่น Python 2 กับ Python 3 Visual Basic vs VB.Net vs VBScript? แล้ว supersets หรือ near-supersets เช่น C vs C ++ ล่ะ? ขออภัยสำหรับ pedantry แต่นี่คือรหัสกอล์ฟ! :-)
Darren Stone

คำตอบ:


11

คะแนน: 4651

2907 + โทษ 60%

1. GolfScript - 14 ตัวอักษร

{*}:a;lligator

การใช้งาน: c n aเช่น"test" 3 a->testtesttest

ดาว สวัสดี Gilmoore

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

ดาวBunker ดาวGood Parts

4. Python - 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. Python - 89 ตัวอักษร

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

6. Python - 189 ตัวอักษร

def f(l):
 for i in 0,1:
  for n,u in enumerate(l):
   o=l[n+1] if len(l)>n+1 else id 
   if i:print u,' '*4,
   elif o!=id:print' /'+('+' if o-u>0 else '')+str(o-u)+'sers'*0+'\\ ',
  print

7. Python - 1727 ตัวอักษร

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. Python - 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. Python - 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
@ ธารามันมีไว้สำหรับถ้วยรางวัล Happy Gilmoore: "ทางออกที่สั้นที่สุดที่มีคำว่า" จระเข้ "ในรหัส"
PhiNotPi

# 9 ใช้วงเล็บปีกกา ( i<i<42) หรือพวกเขาได้รับอนุญาตตราบใดที่คุณใช้พวกเขาเป็นตัวดำเนินการเท่านั้น
Christopher Creutzig

@ChristopherCreutzig ขอบคุณคง
AsksAnyway

7

คะแนน: 1320

ฉันต้องทำหลายอย่างเพื่อปรับปรุงคะแนนนี้ ... โอเคอย่างน้อยฉันก็หลีกเลี่ยงบทลงโทษซ้ำ ๆ :-)

1. Python (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))). อย่างไรก็ตามมันมีค่ามากเกินไปสำหรับ alos ยอมรับฟังก์ชั่นมากกว่าจำนวนเต็มซึ่งในกรณีนี้มันจะเรียกใช้ฟังก์ชันบนอินพุตเพื่อรับจำนวนการทำซ้ำ น่าเสียดายที่เราต้องพลิกตัวถูกดำเนินการสำหรับงานไม่เช่นนั้นเราก็จะได้คำตอบที่f=:^:ดี

4. C (95 ตัวอักษร)

#include <stdio.h>
#include <stdlib.h>

f(char*p){FILE*f=fopen(p,"a");for(int n=rand(),y=n*n;y--;y%n||putc(10,f))putc(rand()%94+32,f);}

ภารกิจนี้ปล่อยให้ห้องพักค่อนข้างน้อยสำหรับการตีความและใช้ในทางที่ผิด: มันเป็นเพียงแค่การส่งออกตัวอักษร ASCII แบบสุ่มที่พิมพ์ได้และบอกว่ามันเป็นสี่เหลี่ยมผืนผ้าสุ่มขนาดที่มีมิติจากชุด {1}? อาจจะไม่. อย่างไรก็ตามฉันไปกับธรรมดาrand()แต่ในความเป็นจริงคุณอาจต้องการเพิ่ม%9หรืออะไรบางอย่างถ้าคุณต้องการทดสอบ ในกล่อง linux ของฉันฉันไม่ต้องล้างไฟล์เพื่อที่จะเขียน (ฉันเดาว่ามันจะฟลัชโดยอัตโนมัติเมื่อออกจากโปรแกรม) แต่ฉันค่อนข้างแน่ใจว่าคุณต้องล้างมันให้เป็นไปตามมาตรฐานดังนั้นรู้สึก ฟรีเพิ่มfflush(f);ในการนับที่นี่

5. Haskell (100 ตัวอักษร)

import Control.Arrow
import Data.List
import Data.Tuple
import Control.Applicative

h p c=head.filter(p c.snd).zip[1..]
g c=swap.(id***fst.h(==)c).h elem c.lines
f p c=g c<$>readFile p

ผมชอบรูปแบบซ้ำแล้วซ้ำอีกระหว่างการหาแถวและคอลัมน์ (ใจลอยผ่านh)

6. Lua (261 ตัวอักษร)

function f(s,m,y,...)if s and m then for i,v in pairs(m)do
io.write(v,(" "):rep(#tostring(s[i])))end print()elseif s then
r=unpack f(s,{"",f(trouse,r(s))})f({f(nil,r(s))},s)elseif y then
return ("/%s%d\\"):format(m<y and"+"or"-",math.abs(m-y)),f(s,y,...)end end

ใช้ประโยชน์จากค่าส่งคืนและการเรียกซ้ำเพื่อจัดการกับความแตกต่าง มันมีค่าใช้จ่ายให้ฉันสักสองสามตัวเพื่อให้ตรงกับตัวอย่างผลลัพธ์

7. ไป (307 ตัวอักษร)

func f(p string)[]int{var l[]string
g,_:=os.Open(p)
H,M,s,m:=0,0,bufio.NewScanner(g),[][]int{{-1,-1,11},{-1,0,12},{-1,1,1},{0,-1,9},{0,1,3},{1,-1,7},{1,0,6},{1,1,5}}
for s.Scan(){l=append(l,s.Text())}
for _,a:=range m{if l[2+a[0]*2][2+a[1]*2]!=' '{M=a[2]}
if l[2+a[0]][2+a[1]]!=' '&&(H==0||M!=a[2]){H=a[2]}}
return[]int{H,M}}

อาจจะเล่นกอล์ฟได้มากขึ้น ฉันเพิ่งจะรู้ว่าไป

8. CoffeeScript (+ node.js) (223 ตัวอักษร)

f=(p)->
 a=require('fs').readFileSync(p).toString().split "\n"
 U=(i,j)->a[i]?[j]and a[i][j]==' '
 for l,i in a
  for c,j in l
   m =
    "/":[i+1,j-1]
    "\\":[i+1,j+1]
    a:[i+1,j]
   return if U.apply(0,m[c]or m.a)
 1

ค่อนข้างถูกเพราะผมมี JS อยู่แล้ว โอ้ดี ส่งคืนค่าเท็จ (กล่าวคือundefined) หรือค่าจริง (กล่าวคือ1) เพื่อระบุคำตอบ

9. Bash (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. Rough - PHP, 72 ตัวอักษร

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

3. Curry - 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. Bridge - Python, 166 chars

def f(l):J=''.join;t=map;r=lambda n:' '*len(n);s=t(str,l);o=['/%+d\\'%(y-x)for x,y in zip(l,l[1:])];print J(t(J,zip(t(r,s),o)))+'\n'+J(t(J,zip(s,t(r,o)+['users'*0])))

7. เวลา - Python, 205 ตัวอักษร

def f(p):
 s=open(p).read();a=[s[:12],s[18:],s[11:15],s[15:18]];z=[0]*3
 for l in(0,1):
  for c in'/|\\':z[a[l].count(c)]=('|/'.find(c)+6*l)%12or 12
  z[a[2+l].count('-')]=3+6*l
 print[z[1]or z[2],z[2]*5%60]

สมมติว่าบรรทัดเป็นช่องว่างที่มีความกว้างห้าตัวอักษร ใช้แท็บสำหรับระดับการเยื้องที่สอง

8. Timber - 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. 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

@FlyFly ใช่ความผิดของฉัน ฉันอัปเดตการให้คะแนนและการใช้งาน แต่ลืมเปลี่ยนโซลูชันจริง
grc

4

แก้ไข: คิดว่าฉันเพิ่งจะส่งสิ่งนี้ตามที่เป็น: 1290 ผลรวมไม่มีการทำซ้ำภาษา

อนุรักษ์, C # 53

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

ฉันตัดสินใจเปลี่ยนภาษาด้วย # 1 และ # 9 มูลค่าทั้งสิ้น 30 ที่นี่นับร้อยในภายหลัง

อยู่ที่ไหนสักแห่งใน Python 59

ฉันไม่ควรใช้ภาษาที่ดีเช่นนี้กับปัญหาง่ายๆ นอกจากนี้วิธีนี้ไม่ได้เป็นส่วนหนึ่งของฟังก์ชั่นตระกูล index ของภาษาใด ๆ ฉันดูเหมือนจะต้องการสิ่งนี้เสมอ ...

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

แกงกะหรี่ดินเนอร์ Lisp 61

ฉันไม่ได้สัมผัสเสียงกระเพื่อมตั้งแต่นั้นหนึ่งสัปดาห์ในวิทยาลัย ....

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

Spew, Bash / shell utils 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 * นั้นดีพอ ๆ กับไฟล์ * = 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 ในขณะที่เขียนสิ่งนี้ (ดีกว่าไม่สาย!) ฉันเข้ามาในสิ่งนี้เพื่อต้องการทำวีรกรรม regex ดังนั้นฉันจึงสร้างสตริงเป็นทั้งสองเลเยอร์ของสะพานด้วยกันจากนั้นใช้ regexes ด้วยการแทนที่ช่องว่างเพื่อสร้างสองบรรทัดที่แตกต่างกัน

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}

เวลาผ่านไปเมื่อคุณเล่นกอล์ฟจาวา 297

คุณสามารถทำอะไรได้หลายอย่างมากที่จะทำให้ java terse ... มันถือว่านาฬิกาเป็นช่องว่างดังนั้นแต่ละบรรทัดมีความยาว 5 ช่อง

public boolean p(int r,int m,String s){int c[]={1,1,0,-1,-1,-1,0,1};return s.charAt(6*c[(r+6)%8]*m+14+c[(r)%8]*m)!=' ';}
public int[]time(String c){int h=9,m=0,t[]={3,5,6,7,9,11,12,1};for(int i=0;i<8;i++)if(p(i,1,c))if(p(i,2,c))m=i;else h=i;if(h==9)h=m;m=(t[m]*5)%60;h=t[h];return new int[]{h,m};}

ท่อนซุง! Javascript 201

มันทำงานในคอนโซลของโครเมี่ยม ฉันไม่รับประกันในที่อื่น = p มันต้องการให้เส้นที่ถูกเว้นวรรคมีความยาวออกไปตามความยาวของเส้นที่ยาวที่สุด ฉันรู้สึกว่านี่เป็นคำขอที่สมเหตุสมผลของศิลปะ ASCII

function f(s) {s=s.split("\n")
d={};m={'/':-1,'\\':1};r=1
s.forEach(function(x){t={}
for(i=0;i<x.length;i++){if(x[i]!=' '){j=m[x[i]]?i+m[x[i]]:i
t[j]=1}}for(n in d){if(x[n]==' '){r=0}}d = t})
return r}

คนเกียจคร้านข่าวทับทิม 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- C (~ 109)

int f(char*t,char*s,int n){int i;char*q=t;int l=strlen(s);for(i=0;i<n;++i){t=strstr(t, s)+l;}return(t-q-l);}

รุ่นที่อ่านได้:

#include <string.h>

int f(const char *t, const char *s, int n)
{
  int i;
  char *start = t;
  int l = strlen(s);
  for(i = 0; i < n; ++i)
  {
    t = strstr(t, s) + l;
  }
  return(t - start - l);
}

3- Javascript (~ 56)

function(x, y) {return function() {for(i=0; i<x(); i++) y();}}

4- 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- 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- 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 hack (~ 193)

wget -qO - http://news.ycombinator.com/rss | tr "\074\076" "\n" | grep -B1 /title | awk 'NR % 3 == 1' | head -21 | tail -20 | sed 's/$1/$2/' | awk '{ print "\074h1\076" $0 "\074/h1\076"}' > $3

1
ดี แต่ # 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
}

ส่วนใหญ่ยังไม่ทดลองเพราะการเขียน procs เหล่านี้ในครึ่งชั่วโมงน่าสนใจมากกว่าการพยายามสร้างรหัสกอล์ฟอย่างถูกต้อง สนุก!


2

มีเวลาทำงาน 1/2 ของเหล่านี้เท่านั้น คุณดูเหมือนจะต้องการพวกเขาในรูปแบบของฟังก์ชั่นและไม่ซับหนึ่ง ดังนั้นทั้งหมดนี้คือฟังก์ชั่น รหัสการทดสอบด้านล่างฟังก์ชั่น ในภาษา Perl

กรีนเวย์:

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 Curry for Dinner] Javascript, 59 ตัวอักษร

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

[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. Greenway (Haskell - 37)

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

2. ที่ไหนสักแห่งใน Rough (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. ขอนไม้! (ไป - 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 ของฉันโซลูชัน“ ขอนไม้” ใน Perl (149 ตัวอักษร)

เพื่อนร่วมงานคนหนึ่งของฉันทำให้เรื่องนี้เป็นเรื่องท้าทายในที่ทำงาน เราสนุกกับมันโดยเฉพาะฉันตั้งแต่ฉันมีทางออกที่ต่ำที่สุดจนถึงตอนนี้!

กฎของเราคือต้องเป็นสคริปต์แบบสแตนด์อะโลนที่แสดงtrueหรือfalseตามด้วยบรรทัดใหม่ถึงSTDOUTและไม่มี "shebang" เป็น OK

ด้านล่างเป็นโซลูชัน“ ลดขนาด” ฉันยังวาง " ส่วนสำคัญ " ของสิ่งเดียวกันซึ่งรวมถึงโค้ดที่ไม่ "ย่อหย่อน" และ (มักจะยาวมาก ๆ ) คำอธิบายเหตุผลที่อยู่เบื้องหลังแนวทางของฉัน


$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

ฉันรู้จัก 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

ภาพหน้าจอ

ที่ไหนสักแห่งใน Rough

Curry for Dinnerใน 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);

ภาพหน้าจอ

คาย


เทอร์มินัลของคุณใช้อะไร
Alexander Craggs

0

1. Greenway (Python 2: 20)

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

อินพุตตัวอย่าง: a("asdf",3)-> string ( asdfasdfasdf)

2. อยู่ที่ไหนสักแห่งใน Rough (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. Curry for Dinner (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. Spew (C ++ 11: 171)

#include<fstream>
using namespace std;void d(string f){ofstream o;int i=rand()%10;int j=rand()%10;o.open(f);for(int x=0;x<i;x++){for(int y=0;y<j;y++){o.put(rand()%256);}}}

ไม่ได้ทดสอบสิ่งนี้ แต่ควรจะได้ผล


0

การเยื้องบางส่วนอาจไม่สามารถอ่านได้ แต่จะถูกลบออกเมื่อนับจำนวนอักขระ รวมอยู่ที่ประมาณ1,227 หรือไม่ฉันลืมปัญหา 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. Scheme (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 ตัวอักษร)

ฉันกำลังมองหาข้ออ้างที่จะลอง Haskell ฉันคิดว่าฉันฉลาดโดยการสร้างรายการของตำแหน่งผ่านการรวมตัวเลข แต่ด้วยจำนวนตัวละครที่ฉันใช้ฉันสามารถเข้ารหัสสิ่งที่ยากได้ โอ้ดี รหัสมีความเลวร้าย แต่มันสนุกที่จะเขียน

แก้ไข: แก้ไขเพื่อให้มันส่งกลับอย่างถูกต้องนาที

w i s=[s!!(j!!1)!!(j!!0)/=' '|j<-mapM(const i)[1,2],j/=[2,2]]
k[e,r](i,o,n)|i&&o=[e, n]|i&&not o=[n, r]|not$o||i=[e, r]
g s=let[h,m]=foldl k[0,0](zipWith3(\x y z->(x,y,z))(w[1,2,3]s)(w[0,2,4]s)[11,9,7,12,6,1,3,5])in let u=mod(m*5)60 in if h==0 then[m,u]else[h,u]
f p = do
  s<-readFile p
  return$g$lines s

8. Lua (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. Python (187 ตัวอักษร)

ขอบคุณ grc / Tyroid สำหรับ url shortener

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.