読者です 読者をやめる 読者になる 読者になる

(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

コラッツの問題

11月16日いろふうらがみ迎撃会 - connpass なんとなく久しぶりに id:irof せんせーに会いたくなったので、重たい腰をあげて行ってきた。なんか Twitter 見てない間に irof せんせーが本を書いてたらしい。 というか、参加登録した後に、イベント主旨が若干変…

Hello, world?

CodeIQ に出した「hello, world × 3」の解説・解題 - Codeへの愛とCuriosity そういえば、これを読んでから書こうってずっと思っててやってなかったの思い出した。一応Gaucheで動きます。 (display (list->string (map integer->char `(,(*(*(+(*)(*)(*))(+(…

僕がGauche書いているときってこんな感じ

gifアニメが面白いのでちょっと調子に乗ってこういうの作ってみた。

豚骨ラーメンが食べたい

どうしよもないくらいどうでもいいことをふと思いつく瞬間がある。 豚豚豚豚骨骨ラララーーメメメメメメメメンンンン2013-08-21 23:42:38 via web@alea12のせいでどうでもいいことを思いついたので、パッと書く。 (define (tonko2ramen str n) (list->string…

Project Euler頑張ってる。

Progress - Project Euler 最新の進捗状況です。あと1問(No.38)が解けたら1から40まで解けたことになる。 9割くらいGaucheで解きました。1,2問くらいExcelで解きました(ぇ解答内容はおおよそ、GitHubにあげてます。 ayato0211/project-euler 3ヶ月くらい前…

n桁以上

書いてないと忘れるので、少し書いておく。 少し考えれば分かるというか、数学漬けだった頃は普通にやってたことが最近どうも忘れていて困る。 (let ((x 1000) (n 4)) (if (>= x (expt 10 (- n 1))) (print (format "~d桁以上" n)) (print (format "~d桁未満…

約数のわっ!

もとい、約数の和について。 Project Eulerで約数の和をそこそこ使うから書いていた。 (let1 x 12 (apply + (filter (^n (zero? (mod x n))) (iota x 1)))) 例えば、こんな感じのロジックを実装していた。 なんだけど、例えばこれを多用するような処理を書い…

眠いです。

昨日4時くらいまで(?)起きてたらしい(?)ので凄く眠いです。 なので、眠いって呟くコマンド作った(!?)。 #!/usr/local/bin/gosh (use net.twitter) (define *cred* (make <twitter-cred> :consumer-key "XXXXXXXXXXXXXXXX" :consumer-secret "XXXXXXXXXXXXXXXX" :access-tok</twitter-cred>…

あやぴーが今日の天気をお伝えします。

2013-08-06東京都 東京 の天気曇時々雨最低気温: --, 最高気温: 322013-08-06 11:47:56 via gosh_de_tweetこんな感じ元ネタというか、こんなものを走り書きしたのはこの発言を受けて。 「晴れルヤ」っていう天気予報をメールでお知らせしてくれるサービスが…

10LISP '00を開催してきた。

初めて自分で勉強会というのを企画して、やりました。10LISP '00 10LISP '00 まとめあまり納得の行く結果にはならなかったので、悔しい思いをしたっていうのが今回。次回勉強会は方向性をもう少し、ゆっくり考えたいので後日。後で調べる。 ドット対、リスト…

小文字の文字列を大文字の文字列に変換する

素朴に書くとこんな感じ? (let1 str "hoge" (list->string (map char-upcase (string->list str)))) シーケンス使えばこう書けるよなーって思ったけど、思ったより短くならなかった。 (use gauche.sequence) (let1 str "hoge" (list->string (map char-upca…

Project Euler 22を解く感じ

(add-load-path "." :relative) (use text.csv) (define *names-text* "./problem-22/names.txt") ;;適当なパスに放り込んだnames.txt (let1 num 0 (fold (lambda (x y) (+ (* (inc! num) (name->score x)) y)) 0 (sort (with-input-from-file *names-text* …

ピアスの公式を書いてみた。

クラムというゲームがあるそうで、それの発展として「砲門の問題(The Gunport Problem)」というのがあるらしい。 m×nの板上にドミノを置いたとき、1×1の大きさの「穴」が最大いくつ開けられるか。 ただしmもnも1より大きいものとする。 ※ドミノは1×2の大きさ…

マクロすごい。すごいマクロ。

マクロすげええええええええええええええ2013-07-17 09:21:57 via Twitter for iPhoneということで、マクロに感動した。マクロ凄い。このブログを書くようになったきっかけである9LISPからかれこれ1年半が経ちました。 9LISP - 037 当時、Lispを勧められたと…

10進数な逆数を求める

暇だったので、朝からカキカキ。逆数を10進数で表現する。 (define (reciprocal m) (let loop ((a '()) (b '()) (n 1)) (if (find (^x (= (mod n m) x)) b) (reverse (cons (div n m) a)) (loop (cons (div n m) a) (cons (mod n m) b) (* (mod n m) 10)))))…

Scheme勉強会をやります!

こんにちは。あやぴーです。 唐突ですが、Scheme勉強会を都内でやりたいと考えています。 というか、やります!!ほぼ確実に。*1 なので、ちょっと今考えていることを書きだしてちょっと反応を貰えたら嬉しいなと思っています。 経緯 【質問】都内で土日何処…

僕と契約してLisperになってよ!-Gaucheの開発環境を整えよう-

というわけで、最近周りの人にLisp(といってもSchemeだしGaucheだけど)を布教する機会が多くなってきたのと、ちょっとセットアップの仕方教えてよ!って要望があったので、Gaucheで遊ぶまでの道のりを優しく丁寧に書いてみる。 (元も子もないことを言えば、…

数字を使わないで1+2をやってみる

タイトルだけみると、「またラムダ計算ですか?」って思われそうだけど今回はそうじゃない。 R5RSの仕様を使って、1とか2という"数字"を式の中に書くことなく「1+2」をやるんです。まぁ解説しながらやると面白くないので、いきなり結果をドンと書いてみる。 …

エラトステネスの篩を書いてみた

唐突に書きたくなったので、書いてみた。 (define (sieve n) (define (iter ls m) (if (not m) ls (iter (filter (^x (or (= m x) (not (zero? (mod x m))))) ls) (find (cut > <> m) ls)))) (iter (lrange 2 n) 2)) ;;test (sieve 100) 昔、自分が書いたも…

ふつうにクイックソートをSchemeで書いた

なんとなーく書いてみた。改めてこういうの書いてみて、アルゴリズム以外をあんまり意識しなくていいのは楽でいいなって思った。 (use util.match) (define (take p lst c) (filter (lambda (x) (c p x)) lst)) (define (take-less p lst) (take p lst >)) (…

Rubyのtimesが羨ましかったので

この前、@alea12とぜろゆ嬢と3人で焼肉行ってた時に、Gaucheで10回Hello,worldを表示するのを見せたら、Rubyのコードでドヤ顔されて悔しかったのでRubyのtimesっぽい書き方ができないか試してみた話。見せたのは以下のコード。 (for-each (lambda (x) (print…

Gaucheの文字列結合

先日からちょっと、ちょこちょこ調べごとしてたのでメモメモ。 string-append 普通に文字列の結合をしてくれる。 (string-append "/home" "/ayato_p" "/text.txt") string-join URLとかCSVとか作るのに便利そう。 (string-join (list "home" "ayato_p" "text…

ハッカーと画家、読んだ

ハッカーと画家については、以下の呟きがその素晴らしさを示していると思う。 前々から気になってたんだけど「ハッカーと画家を読んでLispをやるべきだと思った人」って本当にいるの? 私はそんな人は実は存在しないんじゃないかと疑ってるんだけど。2011-12…

TODO管理用のコマンドをざっくり書いてみた

昨日仕事していて、パソコンで使うTODOアプリがあんまり便利なのないなーって思ったので、適当なの作った。 ちなみにXubuntuで今はお仕事の資料を書いている。LibreOfficeそこそこ使えるじゃん。 要件 コマンドでTODOを追加できる シンプルにテキストで管理…

Lispっぽく素数判定する?

SICPを読んでいても出てくるprime?という素数判定のための手続き。思い出したように、これって短く書けるんじゃない?って思ったのでメモ書き。 SICPに出てくるのは確かこんな感じ。 (define (prime? n) (define (smallest-divisor n) (find-divisor n 2)) (…

囚人のジレンマ

鳥のアイコンの人が、昨晩呟いてたのをGaucheならどう書くかなーって少しだけ考えたので、そのままさくっと載せてみる。 このコードどうしたらもっと見通し良くなるだろう URL2013-06-26 01:08:14 via webまず、囚人のジレンマとは 囚人のジレンマ(しゅうじ…

lrangeというのを使ってみた。

前回の記事書いたら、shiroさんからコメントでlrangeというのを教えてもらったので使ってみた。 Function: lrange start :optional end step startからstepづつ増加し、endを越える直前までの遅延数列を 返します。stepのデフォルトは1、endのデフォルトは無…

Re:超簡単にTwitterに連投できる「連投」をつくりました

@alea12が面白いことしてたので、パクったアイデアを頂いた。 元記事こっち。 超簡単に Twitter に連投できる「連投」をつくりました 昨晩、僕の本垢で「Hello, world!!」を100回程度連投していたのは、これのコードを書こうとしていたため。。…ソースコード…

Scheme可愛いよって話をしていたら、「括弧が多い」って言われたので

今日は昼間、会社の同僚と久しぶりに会って話していました。そして、話しているうちにSchemeかわいいという話を僕がしていて、実際にFizzBuzzのコードを書いてみせて、その後Project-Eulerの問題を解いてみせたんですが、「でも、括弧が多いし…」と言われた…

【バグを踏んでたらしい】let-argsを使ってみたら、よく分からない挙動をした。。。

2013/06/23 追記 ということで、報告から12時間しないうちに直されてしまいました。 [Scheme][Gauche]let-argsを使ってみたら、よく分からない挙動をした。。。 URL2013-06-23 07:19:10 via Hatena @ayato_p いや、そりゃ Gauche のバグっぽいですね。2013-0…

SICPを読む_(13)2章_データによる抽象の構築(p49-59)

明日と言って、「明日」書いた覚えがない程度にダメ人間。 さて、今日は暇なのでにゅるっと頑張る。 2.1.2 抽象の壁(p49-50) 抽象の壁、ということでシステムの異なるレベルを隔離するものとして表現されている。 有理数の演算について考えた場合、add-rat,s…

Gaucheのモジュールを書いてみた

SICPを解いているとどうしてもaverageとかsquareとかfibとか、突拍子もなく出てきて「あー、書かないとダメかー」っていう思いを何度もすると思う。いや、もしかしたら早い段階で気付いた人は、どっかのファイルにまとめて書きだして (add-load-path "hogeho…

SICPを読む_(12)2章_データによる抽象の構築(p45-49)

間が空きました。なんかVPSといらぬ戰いをしていたので、ちょっと本流に戻ってきます。*1 (GaucheのKahuaとか触りたい…うずうず。いつかGaucheのソースコード読めるようになるんだ…。)というわけで2章、入っていきます。年内に終わらせたいと言いつつ本当に…

Gaucheを常に最新に保つ。

@ayato_p GaucheはHEADを使うものだあああああああああああああ2013-05-18 10:41:08 via twicca to @ayato_pということで、GaucheはGitHubのHEADを使うのがなうでヤングらしいので、さくっとやってみる。 と、思ってVPSでHEAD入れようとして、コケまくってた…

Gauche使ってTweetできた

Gauche使ってTweetできたらちょっとおもしろいかなって思って色々探してたら、モジュールがあったので紹介記事だけ書いてみる。 Gauche-net-twitter shiroさんが作ったTwitter用のモジュールがあるんですが、3年ほど前から更新されていないようです。 shirok…

Gaucheのユーザーリファレンスを呼び出す

2日連続更新なんて珍しい。ということで、あやぴーです。最近Gaucheで色々書くことがあったりなかったりしているのですが、 もう少しユーザーリファレンスをスマートにかつ!クイックに!参照したいと思うようになってきた。ちょっとGaucheユーザーらしくな…

GaucheでWEB APIを叩きたかった

こんばんわ!こんばんわ! だいたい、あやぴーです。最近色々と作ってみたいもの、試してみたいことが多くて時間が足りていない感凄い。 で、ちょっと試したいことあったので、まずはWEB APIをGaucheで叩いてみたいと思った!今回とりあえずWEB APIを叩くの…

SICPを読む_(11)1章_手続きによる抽象の構築(p37-44)

ということで1ヶ月と少しぶりです。SICPの続きです。前回までで何処までやったかすっかり忘れていますが、37ページ付近まで書いたみたいなので頑張って1章終了まで持っていきます。 1.3.3一般的方法としての手続き(p37~40) この節で、関数の零点と不動点を探…

SICPを読む_(10)1章_手続きによる抽象の構築(p31-37)

間がめちゃくちゃ開いた気がします…。気がついたら脱線しまくりの、私生活ドタバタで全然進んでませんでした。 ということで気を取り直して、またサクサク進みますよ!>< 1.3高階手続きによる抽象(p31) プログラムで3乗することはできるが、言語には3乗の…

ドラクエ7のバロックタワーのパズル問題にSchemeで挑んだ結果…

はい。昨晩Twitterでこんなのが流れてきました。 (※ネタバレあり) / ドラクエVIIのバロックタワーのパズルを解く URL2013-02-21 00:26:53 via Tweet Button僕も最近毎晩のようにドラクエ7やってます。 今、ちょうど最強の呪文を覚えたりしたとこです。ちな…

SICPを読む_(9)1章_手続きによる抽象の構築(p26-31)

おはようございます!!ドラクエ7やってますか?? やっとルーメンクリアしたあたりで、主人公が勇者極めちゃってたり、マリベルが天地雷鳴師極めちゃったんで、ローズバトラー極めに行こうかと計画してたりします。*12月に入ってSICP読むも、なかなかこっちに書…

named-letの練習

なんかnamed-letが分かりにくかったので書いて理解しようとした。 文字列の空白を除いて文字数をカウントする手続き (define (str-count str) (let loop ((ls (string->list str)) (count 0)) (let ((inc (lambda (x) (+ x 1)))) (cond ((null? ls) count) (…

KPF#x08でLTしてきたよ #kpf

こんにちは!こんにちは!ということでkpfの第8回目に参加して、LTしてきたのでブログに書いてみる。告知ページはこちらでした。 KPF#x08 当日のまとめはこっち。 KPF #X08 KPFとは ということで、まず「KPFとは?」というところをさくっと説明しておきます…

SICPを読む_(8)1章_手続きによる抽象の構築(p23-26)

今日はできればp30まで書きたい。ということでノロノロ書いていきます。 1.2.3増加の程度(p23-24) 計算の資源を消費する速度について考える。 プロセスの入力が大きくなるにつれて必要とする資源を、粗く見積る「増加の程度」を考える。 最近の若者はアルゴ…

SICPを読む_(7)1章_手続きによる抽象の構築(p20-23)

今回は木構造再帰の部分らへんを書いてます。 1.2.2木構造再帰(p20-) 計算でよくあるパターン「木構造再帰」 ということでフィボナッチ数列。 (define (fib n) (cond ((zero? n) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) 黄金比すげぇ(脱線…

SICPを読む_(6)1章_手続きによる抽象の構築(p21)

なんだかんだで少しずつ進んでるので、自分を褒めてあげたい今日このごろ。 ということで、今日も今日とて少しずつSICP読み進めますよ!!>< 問題1.9(p20) (define (plus a b) (if (= a 0) b (inc (plus (dec a) b)))) (define (plus a b) (if (= a 0) b (…

SICPを読む_(5)1章_手続きによる抽象の構築(p14-20)

1.1.8ブラックボックス抽象としての手続き(p14-17) 再帰的であることに注意 それ自身を使って手続きが定義出来るという考えは紛らわしい 再帰については後で触れる sqrtのプログラムは手続きの"束"であるといえる 問題の部分問題への分割を反映している 手続…

SICPを読む_(4)1章_手続きによる抽象の構築(p14)

問題1.6(p14) とりあえずnew-ifを書いてみる。 (define (square x) (* x x)) (define (abs x) (if (> x 0) x (- x))) (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause))) (define (sqrt-iter guess x)…

srfi-1のfilterってこんな感じ??

これの追記を書いたときに、srfi-1のfilterに興味持ったのでちょっと分かったことだけメモっとく。一般形としてはこんな感じかな?? (filter predicate list) なんか無名関数とか渡せるらしい (filter (lambda (x) (= (modulo x 2) 0)) (iota 100)) 自分で作…

エラトステネスの篩(Schemeで書きたかった)

なんとなく書いてみた。 (define (range m n) (cond ((> m n) ()) (else (cons m (range (+ m 1) n))))) (define (filter x l) (cond ((null? l) ()) ((= (modulo (car l) x) 0) (filter x (cdr l))) (else (cons (car l) (filter x (cdr l)))))) (define (s…