Language detail: Other

Coverage: 62.77%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

next >>

LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)
Lazy K で 630 byte。

Lazy K のソースに付属している Lazy K コンパイラを使って以下のソースを Lazy-K に
変形し、適当に整形しました。

(load "./lazier.scm")
(load "./prelude.scm")
(load "./prelude-numbers.scm")

(lazy-def '(pred n)
          '(lambda(f x)
             (n (lambda(a b)(b (a f))) (k x) i)))
(lazy-def '(sub32 x) '(32 pred x))

(lazy-def '(islower x)
          '(car (x cdr (97 (cons #f) (26 (cons #t) (list-of #f) )))))

(lazy-def '(title f x)
          '(cons (car x)
                 (f
                   (and (= 32 (car x)) (islower (car (cdr x)))
                        (cons (sub32 (car (cdr x))) (cdr(cdr x)))
                        (cdr x)))))
(print-as-unlambda (laze '(Y title)))
1
2
3
4
5
6
7
8
9
sii(s`k(s`k`s(s`ks(s`k`si(ss`si`kk)))(s`k`s`kk(s(s`ksk)`k(s(s(s(s(s`k(si`kk)
(s(s(si`kk)`k(si`k`ki))`k(s(s`ksk)i(s(sii)i(s(s`ksk)i)(s`k`s(si`k`ki)k))(s(s
i`kk)`k(sii(s`k(s`k`s(si`k`ki)k)(sii)))))))(s(s(s(s(si`k`ki)`kk)`k(si`k`ki))
`k(s(sii)i(s(s`ksk)i)`s(s`ksk)(s(sii)`s(s`ksk)(s(s`ksk)i))(s`k`s(si`k`ki)k)(
s(s`ksk)(s(s`ksk)i(s(s`ksk)(sii(s(s`ksk)i))))(s`k`s(si`kk)k)(sii(s`k(s`k`s(s
i`k`ki)k)(sii))))))`kk))`k`ki)(s(s`ks(s`k`si(s`kk(s`k(s(s`ksk)i(s(sii)i(s(s`
ksk)i)(s(s`ks(s`k`s`ks(s(s`ks(s`k`s`ks(s`k`s`kk(s(s`ksk)`k(s`k`s`k`si(s`k`s`
kk(s`k`sik)))))))`k`kk)))`k`k`ki)))(s(si`k`ki)`kk)))))(s`kk(s(si`k`ki)`k`ki)
)))(si`k`ki)))))(sii))
音声合成でHello, world! (Nested Flatten)
uwscのマニュアルには「要SAPI 5.x」とあります。
コントロールパネルに「音声認識」があれば使えるようです。
1
2
3
SPEAK("Hello, world!")
SPEAK("こんにちは")
SPEAK("どう書くorg、それはプログラマの為のコロシアムです。")
隣り合う二項の差 (Nested Flatten)

VBA for Excel (2003) カラムAに縦に並べて数値を入れておくと、 カラムBに差分を表示する。

1
2
3
4
Sub Main()
    Range("B1") = "=IF(ISBLANK(A2),"""",A2-A1)"
    Range("B1").Resize(Range("A1").End(xlDown).Row).FillDown
End Sub
LL Golf Hole 3 - 13日の金曜日を数え上げる (Nested Flatten)

VBA for Excel (2003)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Sub Main()
  t = Date
  p = 0
  Do
    If DateValue("2013/12/31") = t Then
      Exit Do
    End If
    If Day(t) = 13 And Weekday(t) = 6 Then
      Range("A1").Offset(p) = t
      p = p + 1
    End If
    t = t + 1
  Loop
End Sub
LL Golf Hole 5 - 最上位の桁を数え上げる (Nested Flatten)

VBA for Excel (2003)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Sub Main()
  n = Val(InputBox(""))
  m = 0
  p = 0
  Do
    Range("A1").Offset(p) = m
    If m = n Then
      Exit Do
    End If
    l = Len(Str(m)) - 2
    m = m + 10 ^ l
    p = p + 1
  Loop
End Sub
LL Golf Hole 7 - バイト数を読みやすくする (Nested Flatten)

phpがないようなので。CLI版の標準入力からです。

ヨタの上ってないのでしょうか?

1
<?php $l=array('','K','M','G','T','P','E','Z','Y','?');$b=$argv[1];for(;$b>=1024;++$i){$b/=1024;}echo $b,$l[$i];

VBA for Excel (2003)

1
2
3
4
5
6
Sub Main()
  b = Val(InputBox(""))
  i = Int(Log(b + 0.1) / Log(1000))
  p = b / 1000 ^ i
  MsgBox p & IIf(i > 0, Mid("kMGTPEZY", i, 1), "")
End Sub
文字列型日時ののN秒後時間取得 (Nested Flatten)

VBA for Excel (2003)

1
2
3
4
Function DateEx(str, sec)
  p = InStr(str, " ")
  DateEx = DateValue(Left(str, p - 1)) + TimeValue(Right(str, Len(str) - p)) + sec / 86400
End Function
LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)

VBA for Excel (2003) 短くしました。

1
2
3
4
Sub Main()
  i = Val(InputBox(""))
  Range("A1").Resize(i * 2 - 1) = "=REPT(""*""," & i & "-ABS(ROW()-" & i & "))"
End Sub

VBA for Excel (2003)

1
2
3
4
Sub Main()
  i = Val(InputBox(""))
  Range("A1").Resize(i * 2 - 1).Formula = "=REPT(""*"",IF(ROW()<=" & i & ",ROW()," & i & "*2-ROW()))"
End Sub
指定されたフォルダ以下のゴミ掃除 (Nested Flatten)

VBA for Excel (2003)。デストローイ。ノーフューチャー。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Main()
  Dim p, o
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    p = .SelectedItems(1)
    Set o = CreateObject("Scripting.FileSystemObject")
    Call Df(p, o)
  End With
End Sub

Sub Df(p, o)
  Dim f, d
  With o.GetFolder(p)
    For Each f In .Files
      If Right(f.Name, 1) = "~" Then
        f.Delete
      End If
    Next
    For Each d In .SubFolders
      Call Df(p + "\" + d.Name, o)
    Next
  End With
End Sub
LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)
午後のLTでGrassが発表されるらしいので書いてみました。 irie氏作のgrass.elを使ってLispコードから翻訳しています。
1
2
3
4
5
6
7
8
9
wwWWwwWwwvwwWWWwWWWwvwWWwWwvwwwWWWwwWwwWWWWwvwvwWWwwwvwwWWwWWWwvwWWWWwwvwwwwWWW
wWwwwwwWwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWwWWWWwwwwWwwwwwwwWWWWWWWWWWWWWWWWWWWWw
wwwwwwWWwvwwwwwWWWWWWWWWWWWWWWWwWWWWwWWWWWWWWWWWWWWwWWWWWWWwwwwWWwwwwwwwwwWWwwW
wwwwwwwwWwwwwwwwWWWwwwwwwWwwwwwwwwwwwwwwvwWWWWWWWWWWWWWWWwvwWWWWWWWwWWWWWWwWWwW
WwWWwwwwWwwWWWWWwWWWwWWWWWWWWWWWWWWWwWwwwwWWWWWWWWWWWWWWWwWwwWWwwWWWwWwwwwwwWww
wwWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWwWWWwwWW
WWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWwwwWwwWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWwwwwWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwww
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)

せっかくGrassをLLで紹介させて頂ける機会を頂いたので、ひとつくらいはお題を解いてサンプルコードを投下しておこうと思いますw

文字列は標準入力から読み込んで、半角スペースのみ単語区切り文字として認識します。ASCIIコード前提。詳細はコード中のコメントをご覧下さい。

ベタ書きでチューニングしていないので、もっと短くできるはず。たぶん。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
1wwWWwv
足し算wwwwWWWwwWwwWWWWWWwwwwWwwv
かけ算wwwWWWwWWWwv
定数とかWWwww2Wwwww3WWw4WWww9WWWww
13WWWWWWWwwWww26WWWWWWWWWwWww
169WWWWWWWWwww空白Wwwwwwwwwwwwwww
wWwwwwwwwwwwwwwwwww14WWWWWWWWWW
WWwwwwww16WWWWWWWWWWWWwwwwwwww
ww32WWWWWWWWWWWWWWWWwWww224WW
WWWWWWWWWWWWWWWwwwwWwwww33WWW
WWWWWWWWWWWWWWWwwwAWwwwwwwwww
wwwwwwwwwwwwwwwWwwwwwwwwwv
偽wwv
3つ目取り出しwwwv
三つ組みwwwwWwwwwWwwwwWwwwwv
大文字かどうか判定するループの中身wwwWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWwwW
WWwwwwWWWwwwWwwWWWWWWWWwwwwwww
WwwwwwWwwwv
ループの中身その2wWwwv
大文字かどうか判定するぜwWWWWwWwwwwwwwwWww
wwwwwwWWWWWWWWWWWWWWWWWWWWWW
wwwwwWwwWwwwwwwwwwwv
語の中にいるときwwWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWwWWWwwwv
語の先頭にいるときwWWWWWWWWWWWWwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwWwwWWWWW
wWwwWwwwwwWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWwWWWWWWW
Wwwwwwwwwv
EOFってのはどんな文字を受け取っても真を返す関数だっぜwv
wwwWWWWwwv
空白文字のときwwwWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWwWWWWwww
wwwwv
空白文字じゃないときwwwWWwWWWWwv
空白文字かEOFのときwwwWwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwWw
wwwwwwWwwwwwwWwwwwwwWwwwwwwv
メインループww一文字読み込んでWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWwwwwwwWWWwww空白文字かどうか判定WWww
wwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwWww
wwwwwwWwwwwWwwwwwwwWwwwwwwwv
メインwWWwwWwwwwwwwww
LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)

Forthでも書いてみました。

4 PIRAMID で実行できます。

1
2
: PIRAMID ( n -- )
DUP DUP -1 * 1 + DO DUP I ABS - 0 DO ." *" LOOP CR LOOP DROP ;
LL Golf Hole 5 - 最上位の桁を数え上げる (Nested Flatten)

あう、 "ARGV[0]" は pop で良い。 28B

1
2
print"$_
"x/^.0*$/for 0..pop
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)

3文字

1
a="1":[x++y|x<-a,y<-["0","1"]]
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)

先ほどshebang版も投稿しましたが, 1.8.7ならこっちの方が短いですね.

1
ruby -pe'gsub /\b./,&:upcase'
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)

old awkです。何の芸もありませんが。

1
2
3
4
5
6
7
8
9
#!/bin/awk -f
{
n=$1
a=n%2
while((n=int(n/2))>0)
        a= (n%2) a
print $1 "->" a

}
Hello, world! PDF版 (Nested Flatten)

PDFも言語ですよね、ということで。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
%PDF-1.4

1 0 obj
<<
 /Type /Page
 /Parent 5 0 R
 /Resources 3 0 R
 /Contents 2 0 R
>>
endobj

2 0 obj
<< /Length 53 >>
stream
BT
/F1 90 Tf
1 0 0 1 10 600 Tm
(Hello, World!) Tj
ET
endstream
endobj

3 0 obj
<<
 /ProcSet [ /PDF /Text ]
 /Font << /F1 4 0 R >>
>>
endobj

4 0 obj
<<
 /Type /Font
 /Subtype /Type1
 /Name /Helv
 /BaseFont /Helvetica
>>
endobj

5 0 obj
<<
 /Type /Pages
 /Kids [ 1 0 R ]
 /Count 1
 /MediaBox [ 0 0 595 842 ]
>>
endobj

6 0 obj
<<
 /Type /Catalog
 /Pages 5 0 R
>>
endobj

trailer
<< /Root 6 0 R >>

%%EOF
クリップボードへの転送 (Nested Flatten)

Mac OS Xには pbcopy, pbpasteの名前でシェルから クリップポードを操作するコマンドが 存在します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/usr/bin/env ruby -wKU

if (ARGV.length != 1)
  print "Usage: handle_pb [-show] text\n"
end

if ARGV.include?('-show') 
  
  print %x{ pbpaste }
else
  ENV['PB_COPY_TEXT'] = ARGV[0]
  
  # デフォルトではpbcopyは日本語の場合Shift-JISしか扱えない
  %x{ echo $PB_COPY_TEXT | nkf -s | pbcopy } 
end
next >>

Index

Feed

Other

Link

Pathtraq

loading...