Tantangan 9 Lubang [ditutup]

65

Tantangan 9 Lubang

  • 9 kode tantangan golf dari berbagai kesulitan.
  • Hukuman karena menggunakan bahasa yang sama lebih dari satu kali.
  • Pertanyaannya akan diperbarui dengan pemenang pars, hole hole, dan piala.

    Ini berasal dari kompetisi yang saya miliki dengan beberapa teman, ini bukan format yang biasa, tapi saya harap beberapa dari Anda akan menghargai putaran berbeda di dalamnya. Tantangan, peraturan, dan trofi di bawah ini.

Lubang

  1. Greenway (24)

    f(c:string, n:integer)
    Mencetak baris yang berisi ninstance dari c.

  2. Somewhere in the Rough (73)

    f(t:string, s:string, n:integer) -> i
    Di mana iindeks nthinstance sdi t.

  3. Kari untuk Makan Malam (6235)

    f(x:function, y: function) -> g Di mana gfungsi yang akan memanggil y, nkali; di mana nnilai pengembalianx

  4. Spew (92)

    f(p:string) Menulis untuk di file pdan mengisinya dengan persegi panjang acak karakter acak (ascii).

  5. Berburu Harta Karun (75)

    f(p:string, c:char) -> (x, y) Membaca file pyang berisi kisi-kisi simbol dan mengembalikan xdan ymengoordinasikan instance pertama dari simbol itu dalam kisi, asumsikan ada.

  6. Jembatan di Sungai Kwai (179)

    f(l:list[int]) Mencetak diagram beda jembatan untuk l. Misalnya untuk[1,7,3,17,1]

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

    Pastikan spasi dibuat sesuai dengan ukuran angka di atas. Untuk angka panjang 3 digit, Anda akan membutuhkan 4 spasi antara digit pada baris di bawah ini.

    Tangkapan: Di suatu tempat, kode Anda harus mengeja celana (Harus memiliki setidaknya 1 pembatas non-alfanumerik. Misalnya tr(ou,se)(rs)

  7. Waktu berlalu ketika Anda Bermain Golf (1157)

    f(p:string) -> [h, m] Membaca file di pmana berisi representasi ASCII dari jam analog, di mana jarum jam diwakili dengan satu baris, dan menit dengan dua. Keluarkan daftar yang berisi dua elemen: jam dan menit yang ditunjukkan pada jam. Jika hanya satu tangan yang terlihat, asumsikan kedua titik pada posisi itu.

    Berikut ini semua kombinasi yang mungkin untuk dilakukan.

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

    Posisi-posisi ini, masing-masing adalah (12, 1, 3, 5, 6, 7, 9, 11). Asumsikan bahwa karakter lain dalam tampilan jam adalah spasi.

  8. Kayu! ()

    f(p:string) -> b:boolean Di mana p adalah path ke file dengan ascii building. Blok dengan spasi putih di bawahnya akan jatuh. (Kecuali dari garis miring, yang tetap di tempatnya jika ada blok stabil di arah yang berlawanan dengan cara mereka menghadap). Jika bangunan secara integral integral mengembalikan true, sebaliknya return false. Semua blok non-spasi dihitung sebagai solid dan selain garis miring, semuanya jatuh.

    Secara struktural aman

    ____
    |/\|
    |  |
    

    Tidak aman

    |__
      | 
      |
    

    Versi aman

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

    f(s:string, r:string, p:string) Dapatkan judul-judul dari 20 cerita teratas di Hacker News dan ubah semua instance smenjadi r, lalu tulis judul-judul baru ke file html di p, di mana setiap judul terkandung dalam elemen h1.

    File yang dihasilkan harus seperti ini

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

    Tangkap :

    • Anda tidak boleh menggunakan api HN.
    • Anda tidak boleh menggunakan Regex.
    • Anda tidak boleh menggunakan kawat gigi sudut di mana pun dalam kode Anda.

Mencetak gol

  • Hitungan karakter adalah panjang fungsi yang akan dikompilasi & dijalankan dengan benar. Namun Anda masih perlu mengirimkan kode lengkap, termasuk impor.
  • + 10% untuk setiap bahasa yang diulang dalam kiriman Anda. (Mis. Jika Anda menggunakan Ruby untuk 3 solusi, maka skor akhir Anda akan dikalikan dengan 1.2). Versi berbeda dari jumlah bahasa yang sama masih dihitung sebagai bahasa yang sama.
  • Par akan menjadi skor rata-rata untuk setiap lubang.
  • Kirimkan solusi Anda dalam satu jawaban.
  • Skor keseluruhan Anda adalah jumlah karakter Anda + denda bahasa Anda, lalu kumpulkan.

Piala

  • Jaket Emas - ( @Sprigyig - 1290) Nilai keseluruhan terendah
  • Shooter - ( @Sprigyig - 9) Sebagian besar bahasa digunakan
  • Bunker - Skor par kebanyakan di atas pada lubang apa pun
  • Snakes on a Plane - ( @AsksAnyway - 1727) Penyerahan karakter python tertinggi dalam satu solusi
  • Good Parts - ( @AsksAnyway - 255) Jumlah karakter JS tertinggi dalam satu solusi
  • Shakey Steve - Solusi terpendek yang menggunakan antarmuka
  • You're Not From Round Here - Solusi bahasa unik terpendek yang bahasa memiliki halaman wikipedia terpendek.
  • Happy Gilmoore - ( @AsksAnyway - 31) Solusi terpendek yang memiliki kata 'buaya' dalam kode.
  • Unicycling Dwarf Magic - Ekstensi default dari 9 file sumber kiriman Anda adalah anagram kata yang sempurna di Kamus Oxford.

Anda hanya berhak mendapatkan trofi setelah Anda menyelesaikan semua 9 lubang


Pengajuan

  1. @Sprigyig 1290
  2. @Firefly 1320
  3. @ grc 1395
  4. @ Trevor M 1465
  5. @C Gearhart 1654
  6. @ Beli Sirton 1719
  7. @ AsksAnyway 4651
Dan Prince
sumber
2
@anorton <&>
Dan Prince
1
Jam analog memiliki 12 posisi untuk masing-masing tangan, tetapi Anda hanya memberi kami 8. Bagaimana cara kerjanya?
Kevin
1
@DanPrince Apakah Anda ingin /posisi merujuk pada jam 1 atau jam 2? (dan juga untuk semua diagonal lainnya)
apnorton
1
@anorton 1/5, 5/25, 7/35, 11/55
Dan Prince
2
Akankah versi atau rasa bahasa yang berbeda dianggap "berbeda" untuk tujuan penilaian? misal Python 2 vs Python 3? Visual Basic vs VB.Net vs VBScript? Bagaimana dengan superset atau superset dekat seperti C vs C ++? Maaf untuk teliti dan cermat, tapi ini adalah kode-golf! :-)
Darren Stone

Jawaban:

11

Nilai: 4651

2907 + 60% penalti

1. GolfScript - 14 karakter

{*}:a;lligator

Penggunaan: c n amis "test" 3 a->testtesttest

bintang Selamat Gilmoore

2. Python - 72 karakter

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 karakter

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

bintangbintangBagian Bagus Bunker

4. Python - 132 karakter

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 karakter

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 karakter

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 karakter

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]

bintang Ular di Pesawat

8. Python - 226 karakter

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 karakter

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]
AsksAnyway
sumber
Apa yang harus dilakukan dengan komentar "#alligator" dengan kode # 1? Tampaknya dimasukkan dalam jumlah kata untuk beberapa alasan.
Dhara
1
@Dhara Ini untuk trofi Happy Gilmoore: "Solusi terpendek yang memiliki kata 'buaya' dalam kode."
PhiNotPi
# 9 menggunakan kawat gigi sudut ( i<i<42), atau mereka diizinkan selama Anda hanya menggunakannya sebagai operator?
Christopher Creutzig
@ChristopherCreutzig Tetap terima kasih.
AsksAnyway
7

Nilai: 1320

Saya punya banyak hal yang harus dilakukan untuk meningkatkan skor ini ... Oh well, setidaknya saya menghindari hukuman bahasa berulang. :-)

1. Python (21 karakter)

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

Solusi "jelas".

2. ECMAScript 6 (47 karakter)

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

Temukan indeks dengan cara yang tidak konvensional, dengan menghitung panjang substring sebelumnya.

3. J (12 karakter)

f=:2 :'v^:u'

Konjungsi ^:bawaan meningkatkan fungsi ke daya (mis. Mengulangi fungsi beberapa kali). Yaitu f^:3 y = f (f (f y))),. Namun, itu kelebihan beban untuk juga menerima fungsi daripada bilangan bulat, dalam hal ini menjalankan fungsi pada input untuk mendapatkan jumlah pengulangan. Sayangnya kita perlu membalik operan untuk tugas itu, kalau tidak kita akan memiliki jawaban yang singkat f=:^:.

4. C (95 karakter)

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

Tugas ini menyisakan sedikit ruang untuk interpretasi dan penyalahgunaan: apakah boleh untuk hanya menampilkan karakter ASCII yang dapat dicetak secara acak dan mengatakan itu adalah persegi panjang berdimensi acak dengan dimensi dari set {1}? Mungkin tidak. Ngomong-ngomong, saya pergi dengan polos rand()tetapi pada kenyataannya Anda mungkin ingin menambahkan %9atau sesuatu jika Anda ingin mengujinya. Pada kotak linux saya, saya tidak perlu mem-flush file agar bisa ditulis (saya rasa otomatis memerah saat keluar dari program), tapi saya cukup yakin Anda harus mem-flush-nya agar sesuai standar, jadi rasakan bebas menambah fflush(f);hitungan di sini.

5. Haskell (100 karakter)

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

Saya suka pola berulang antara menemukan baris dan kolom (disarikan melalui h).

6. Lua (261 karakter)

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

Manfaatkan beberapa nilai pengembalian dan rekursi untuk menangani perhitungan perbedaan. Harganya beberapa karakter untuk mencocokkan keluaran sampel dengan tepat (menambahkan jumlah ruang yang tepat di mana-mana).

7. Go (307 karakter)

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

Mungkin bisa bermain golf lebih banyak; Saya hampir tidak tahu Go.

8. CoffeeScript (+ node.js) (223 karakter)

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

Sedikit tembakan murah karena saya sudah punya JS. Baiklah. Mengembalikan nilai palsu (yaitu, undefined) atau nilai kebenaran (yaitu, 1) untuk menunjukkan jawabannya.

9. Bash (254 karakter)

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
}

(Baris baru setelah pipa ditambahkan agar mudah dibaca.) Bekerja di sekitar pembatasan dengan shell itu menyenangkan. Saya menyadari mungkin ada cara yang lebih baik untuk dilakukan $2,$4,$6,..., tetapi inilah yang saya lakukan.

FireFly
sumber
1
Apakah ada alasan mengapa Anda belum memasukkan impor / termasuk dalam jumlah karakter? Kalau tidak, kerja bagus!
grc
1
Oh ya, saya lupa menyebutkan itu. Karena pertanyaannya menekankan bahwa "Anda hanya perlu menyerahkan fungsi" Saya berpikir akan adil untuk mengabaikan biaya termasuk perpustakaan standar.
FireFly
Untuk hole 1f=str.__mul__
Snakes and Coffee
@SnakesandCoffee yang tidak mencetaknya ke stdout, sayangnya. :(
FireFly
5

Nilai: 1,394,4

996 karakter + penalti 40%

1. Greenway - Haskell, 19 karakter

f c n=replicate n c

Pemakaian:

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

2. Kasar - PHP, 72 karakter

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

3. Kari - JavaScript 1.8, 45 karakter

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

4. Spew - J, 43 karakter

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

Pemakaian:

f 'file.txt'

5. Harta - J, 64 karakter

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

Pemakaian:

'file.txt' f 'c'

6. Bridge - Python, 166 karakter

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. Waktu - Python, 205 karakter

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]

Asumsikan garis adalah ruang yang diisi dengan lebar lima karakter. Gunakan tab untuk tingkat lekukan kedua.

8. Kayu - Python, 190 karakter

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 karakter

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

Terima kasih kepada Tyzoid untuk ide penyingkat url.

grc
sumber
Sangat terkesan dengan Python Anda, banyak trik untuk dipelajari.
AsksAnyway
1
@ AsksAnyway, terima kasih. Pastikan untuk memeriksa ini jika Anda belum melakukannya.
grc
1
Umm, pasti (1) kamu ada di J, kan? Mungkin Anda lupa memperbarui tajuk heading / sampel.
FireFly
@ Kebakaran Ya, kesalahan saya. Saya memperbarui skor dan penggunaan tetapi lupa untuk mengubah solusi yang sebenarnya.
grc
4

Sunting: Pikir saya hanya akan mengirimkan ini seperti: total 1290, tidak ada pengulangan bahasa.

Greenway, C # 53

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

Saya memutuskan untuk bertukar bahasa dengan # 1 dan # 9. Benar-benar bernilai 30 di sini selama ratusan nanti.

Somewhere In The Rough, Python 59

Saya seharusnya tidak menggunakan bahasa yang begitu baik untuk masalah yang mudah. Juga, bagaimana ini bukan bagian dari keluarga fungsi indeks? Saya sepertinya selalu membutuhkan ini ...

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

Curry For Dinner, Lisp 61

Saya belum menyentuh cadel sejak satu minggu di perguruan tinggi ....

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

Buang, Utilitas Bash / shell 102

Bash-foo saya tidak pernah sebagus ini. Saya akan mengutak-atik yang ini nanti. BTW jika Anda ingin selesai lebih cepat, alihkan ke / dev / urandom.

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

Berburu Harta Karun, C 113

Mungkin salah satu masalah yang lebih ramah C. Saya menafsirkan "mengembalikan dua bilangan bulat" sebagai mengambil pointer array kembali sebagai argumen. Peringatan? Peringatan apa? Int * sama baiknya dengan 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;}

Jembatan di Sungai Kwai, Perl 207

Saya mulai belajar perl saat menulis yang ini. (Lebih baik terlambat daripada tidak sama sekali!) Saya datang ke ini ingin melakukan regex heroik, jadi saya membentuk string sebagai kedua lapisan jembatan bersama-sama, kemudian menggunakan regex dengan penggantian ruang untuk membentuk dua garis yang berbeda.

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}

Waktu Terbang Ketika Anda Bermain Golf, Jawa 297

Anda hanya dapat melakukan begitu banyak untuk membuat java terse ... Ini mengasumsikan jam adalah ruang empuk sehingga setiap baris panjangnya 5 spasi.

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

Kayu! Javascript 201

Ini berjalan di konsol chrome. Saya tidak membuat jaminan di tempat lain = hal. Hal ini membutuhkan garis-garis yang harus diisi ruang hingga panjang garis terpanjang. Saya merasa ini adalah permintaan wajar dari seni ASCII.

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

Slacker News, Ruby 197

def s(f,s,t)
l=60.chr
r=62.chr
IO.write(f,l+"h1"+r+URI.parse("https://news.ycombinator.com").read().split('mhead')[0,20].map{|x|x[0,x.length-19].split(r).last.sub(s,t)}.join(l+"/h1#{r+l}h1"+r))
end
Sprigyig
sumber
Ini bukan hanya jawaban yang bagus, tetapi juga bisa menjadi bacaan yang bagus. Kerja bagus!
Dan Prince
Terima kasih, saya membayangkan itu sedikit kurang menarik sekarang karena saya bertukar ruby ​​dan C #. Tidak perlu lagi mengomel pada split string gila =
.Net
4

Bersenang-senang menyentuh beberapa bahasa sebentar ...

Hitungan karakter diperoleh setelah menghapus spasi / baris baru yang tidak perlu tetapi pengiriman sebagian besar tetap dapat dibaca. Karena pertanyaannya adalah campuran fungsi dan program saya hanya menyertakan tubuh fungsi di mana diperlukan ... Juga beberapa kebebasan diambil dengan apa arti "kembali" adalah ...

Total ~ 1719

1- Python (~ 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);}

Versi yang dapat dibaca:

#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- Scala (~ 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)

Catatan ini membutuhkan jam yang harus diisi (yaitu semua garis memiliki panjang yang sama).

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- Ruby (~ 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
Guy Sirton
sumber
1
Bagus, tetapi # 9 Anda menggunakan kawat gigi sudut, yang bertentangan dengan aturan untuk lubang itu.
Rik Smith-Unna
@ RichardSmith: Terima kasih ... Saya harus memperbaikinya.
Guy Sirton
1
Hati-hati pada lubang # 3, tidak ada jaminan bahwa x () akan mengembalikan nomor yang sama pada setiap panggilan fungsi!
Tyzoid
@ Tyzoid: Saya sedang mempertimbangkan untuk mengambilnya ... Anda benar itu asumsi / interpretasi saya terhadap spek.
Guy Sirton
2

Tidak benar-benar di sini untuk bermain golf, tapi inilah Tcl, karena bahasa membutuhkan lebih banyak cinta:

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
}

Kebanyakan tidak diuji karena menulis procs ini dalam setengah jam jauh lebih menarik daripada mencoba merekayasa kode golf dengan benar. Nikmati!

wackadoo
sumber
2

Hanya punya waktu untuk mengerjakan 1/2 dari ini. Anda sepertinya menginginkan mereka dalam bentuk fungsi dan bukan satu liner. Jadi semua ini adalah fungsi. Kode pengujian di bawah fungsi. Dalam Perl.

Jalur hijau:

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

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

Kasar:

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

Kari:

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

Memuntahkan:

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

Harta:

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

Saya akan bekerja pada 6-9 besok.

Joe
sumber
2

WIP. Catatan, jumlah karakter mungkin tidak aktif karena '\n'danwc

[1 Greenway] Mindf * ck, 54 karakter

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

Penggunaan: Setelah kode ditulis, masukkan string Anda, dan akhiri string Anda dengan a ^ a (ctr + a), lalu segera setelah itu, masukkan nomor Anda.

Satu peringatan: angka yang diberikan hanya harus dari 0-9 (jika Anda menginginkan yang lebih besar, nilai ascii-48 dari karakter apa pun yang Anda masukkan akan digunakan sebagai n)

Tangkapan layar:

Tangkapan layar

[3 Curry for Dinner] Javascript, 59 karakter

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

[4 Spew] BASH, 56 karakter

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

[7 Waktu Terbang Saat Anda Bermain Golf] C, 334 Karakter (412 dengan definisi makro)

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

Catatan: fungsi ini mengembalikan pointer ke array integer dua dimensi, diformat seperti ini: {3, 55} (untuk posisi jam dari jam ke 3, menit ke 11)

[9 Slacker News] PHP, 246 karakter

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

Terpisah / Implementasi asli dalam BASH + AWK, 218 karakter

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";};
Tyzoid
sumber
2

1654

1. Greenway (Haskell - 37)

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

2. Somewhere in the Rough (Mathematica - 43)

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

3. Kari untuk Makan Malam (Lisp - 58)

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

4. Memuntahkan (Matlab / Oktaf - 83)

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

5. Treasure Hunt (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. Jembatan di Sungai Kwai (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. Waktu Terbang Ketika Anda Bermain Golf (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. Kayu! (Pergi - 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'))
C Gearhart
sumber
1

Saya seorang penipu & saya belum memainkan semua 9 hole… belum . Meskipun demikian, inilah lubang saya 8, solusi "Kayu" di Perl (149 char).

Salah satu rekan kerja saya menganggap ini sebagai tantangan di tempat kerja. Kami telah bersenang-senang dengannya, terutama saya, karena saya memiliki solusi par terendah sejauh ini!

Aturan kami adalah bahwa itu harus berupa skrip yang berdiri sendiri yang dihasilkan trueatau falsediikuti oleh baris baru STDOUT, dan bahwa "shebang" tidak apa-apa.

Di bawah ini adalah solusi "diperkecil". Saya juga memasang " inti " dari hal yang sama yang mencakup kode non-"minified" & (sering sangat panjang) penjelasan dari alasan di balik pendekatan saya.


$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
'
roosto
sumber
0

Saya terlalu malas untuk memodifikasinya sesuai dengan peraturan kompetisi Meh, tetapi berfungsi dengan baik ...

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')
jam
sumber
0

Golf kode pertama! (Masih dalam proses ...)

1. Greenway

Bahasa: Python 3.2.3
Ukuran file: 23 byte
Kode:

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

3. Kari untuk Makan Malam

Bahasa: Python 3.2.3
Ukuran file: 64 byte
Kode:

def f(x,y):
    def g():
        for i in [1]*x(): y()
    return g
apnorton
sumber
Anda akan merapat poin untuk menggunakan bahasa yang sama dua kali, jika saya mengerti dengan benar. Jika Anda hanya melakukannya untuk bersenang-senang, tidak masalah.
Hosch250
@ user2509848 Saya tidak tahu 9 bahasa yang bisa golf, jadi saya harus merapat beberapa. :( Terima kasih atas perhatiannya!
apnorton
Ruby, Perl, Golfscript, dan Mathematica sering menjadi pemenang
Hosch250
Saya hanya tahu C ++, dengan beberapa Java dan kurang Python 3.2.3. Tidak ada yang lain selain HTML dan CSS (yang tidak dapat digunakan lagi (CSS)).
Hosch250
0

Pekerjaan lain sedang berlangsung di sini, dan saya sedang bekerja sehingga saya akan kembali lagi nanti.

Greenway di Ruby (14 karakter, 24 dengan #alligator ), panggilan denganf.(c, n)

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

Tangkapan layar

Jalur hijau

Somewhere in the Rough in CoffeeScript (38 karakter)

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

Tangkapan layar

Di suatu tempat di Kasar

Kari untuk Makan Malam dalam JavaScript (54 karakter)

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

Tangkapan layar

Kari untuk Makan Malam

Memuntahkan dalam PHP (111 karakter)

Ini mengharuskan short_open_tagfile konfigurasi PHP diaktifkan. Kalau tidak pembatas pembuka seharusnya <?php, @simbol digunakan untuk membungkam PHP_NOTICEkesalahan yang dilemparkan untuk menghindari menyertakan randdalam tanda kutip, dan untuk tidak secara eksplisit mendeklarasikan $svariabel. Ini akan menghasilkan kotak persegi karakter ascii antara 4 dan 30 karakter pada kedua sumbu.

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

Tangkapan layar

Memuntahkan

Daniel Morris
sumber
Terminal apa yang Anda gunakan?
Alexander Craggs
0

1. Greenway (Python 2: 20)

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

Input contoh: a("asdf",3)-> string ( asdfasdfasdf)

2. Somewhere in the Rough (Python 2: 47)

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

Input contoh: b("1,2,333,4,5,6",",",3)-> int (7)

3. Kari untuk Makan Malam (Javascript: 61)

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

Input contoh: function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();-> log string(1)ke konsol ... 3 kali.

Sesuai spesifikasi, cmengembalikan fungsi, dan tidak benar-benar menjalankan fungsi itu sendiri.

4. Muntah (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);}}}

Tidak benar-benar menguji ini, tetapi harus bekerja.

Sumurai8
sumber
0

Beberapa lekukan dibiarkan utuh untuk dibaca tetapi diambil saat menghitung karakter. Totalnya sekitar 1227 . Atau tidak, saya lupa masalah. 1486 1465 karakter.

1. MIPS ASM (55 karakter)

#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. Skema (52 karakter)

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

3. F # (39 karakter)

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

4. Powershell (133 karakter)

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

#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 karakter)

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

Saya mencari-cari alasan untuk mencoba Haskell. Saya pikir saya pintar dengan membuat daftar posisi melalui kombinasi angka, tetapi dengan jumlah karakter yang saya butuhkan, saya bisa membuat kode yang sulit. Baiklah. Kode ini mengerikan tetapi tetap menyenangkan untuk menulis.

sunting: Tetap agar benar mengembalikan menit.

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

Saya terkejut menemukan bahwa string tidak mendukung pengindeksan gaya array, jadi saya harus bergantung pada sub.

function f (p)
    s=' ' g=''
    for l in io.open(p):lines() do l=l..s:rep(#g-#l) for v=1,#g do
        d=({['/']=v-1,['\\']=v+1,[s]=0})[g:sub(v,v)] or -1
        if l:sub(v,v)==s and (d<0 or d>0 and g:sub(d,d)==s and l:sub(d,d)==s) then
            return false
        end
    end g=l end
    return true
end

9. Python (187 karakter)

Terima kasih kepada grc / Tyroid untuk pemendek url.

import urllib2
def f(s,r,p):[open(p,'a').write('\074h1\076'+i.split("\074")[0].replace(s,r)+'\074/h1\076') for i in urllib2.urlopen("http://x.co/3WYmQ").read().split("\074title\076")[2:]]
TrevorM
sumber