KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

KMC Esolangコードゴルフ大会を開催しました

TSG(東大コンピュータサークル)で行われているEsolangコードゴルフ大会を,まるごと輸入してKMC部内でも開催しました. 日程は2019-03-29から 2019-04-03で行いました. その様子を実況します.

各言語ごとの最終提出の解説はこちらです: github.com

  • 問題やシステムは全てTSGさんのものをお借りしています.
  • サイト(静的): http://esolang-0.wass80.xyz/contests/komabasai2018-day1/
  • ルール:
    • 参加者は赤と青のチーム分かれて言語の陣取りを行う.
    • 自分のチームの陣に4近傍で隣接している陣の言語に提出ができる.
    • すでに取られている陣を取り返すためには,より短いコードを提出する.
    • 自分のチームの提出コードは見れるが,相手チームの提出コードは見れない.
  • 問題概要: hとwを受け取って *からなる長方形を出力する.

1日目

f:id:wass80:20190408110037p:plain

  • システムを設置した.
  • TSGではミニ大会だったので14言語だったが,今回は8言語更に増やしておいた.
  • 参加したい人はいつでも参加できるようにした.チームは適当に割り振られる.

最初にC言語でACされた青チームのコード (140B):

#include<stdio.h>
w,h,y=0,x;main(){scanf("%d\n%d",&h,&w);for(;y++<h;){printf("*");for(x=0;x<w-2;x++)printf(y>1&y<h?" ":"*");printf("*\n");}}

その日のうちに赤チームが取り返す (101B):

y,i,j;main(x){for(scanf("%d%d",&y,&x);i<y;puts(""),++i)for(j=0;j<x;++j)printf(j%~-x&&i%~-y?" ":"*");}

両者素朴な二重ループによる実装を行っている.

2日目

f:id:wass80:20190408113230p:plain

  • 思ったより参加人数が増えたので12言語増えた.
  • 難解言語が足らない気がしたので, Evil, Unreadable,Malbolgeを追加した.
  • 提出可能な陣も4近傍から8近傍に増加.さらにマップの縁は反対側につながるように.
  • 参加者は11人

青チームがC言語を取り返す (99B):

i,w;main(h){scanf("%d%d",&h,&w);for(i=++w*h;i--;)putchar(i%w<w-1&i%w>1&i/w<h-1&&i/w?32:i%w?42:10);}

赤チームが更に取り返す (94B):

y,i,j;main(x){for(scanf("%d%d",&y,&x);j<x||(j=puts(""),++i<y);)putchar(j++%~-x&&i%~-y?32:42);}

数式を用いることで1重ループによる実装を行うことに両チームとも成功している.

3日目

f:id:wass80:20190408113625p:plain

  • 参加者がまだまだ増えるので,言語を13言語増やした,
    • これで当初の倍のマップサイズになった.
  • 真ん中の言語を何にするか悩んだが,京大ということでSchemeにした.
  • 青チームは言語内で他の言語を使い始めた.
    • なでしこはJSを実行し,Emojicodeはperlを実行するようになった.

また青チームがC言語を取り返す (90B):

main(w,h,i){scanf("%d%d",&h,&w);for(i=++w*h;i--;)putchar(~i%w/3&~(i/w)%h/2?32:i%w?42:10);}

赤チームがまた更に取り返す (89B):

y,i;main(x){for(scanf("%d%d",&y,&x),i=++x*y;i--;)putchar(i%x?-~i%x>2&&i/x%~-y?32:42:10);}

4日目

f:id:wass80:20190408113943p:plain

  • どんどん埋まっていくボード.
  • ネットワークに接続して問題を解くことを禁止した.
    • $_=<>.<>;s/\s//;exec "wget -O- xxx.jp/$_"がperlの答えになっちゃうの悲しいのでこうなった.

青チーム更に提出 (88B):

c;i;main(w,h){for(scanf("%d%d",&h,&w);!i++?i=~w,h--:putchar(!i?c=10:i%w/2*h*c?32:42););}

赤チームが提出 (87B):

y,i;main(x){for(scanf("%d%d",&y,&x),x++;i<y*x;)putchar(i++%x?i%x>2&&i/x%~-y?32:42:10);}

5日目

f:id:wass80:20190408114739p:plain

  • 全ての入力に対して正常に動作することを要求した.
    • 入力が偶数の場合だけとか,素数の場合だけとかで動くコードが存在した.

青チームがC言語に提出.これが最終提出となる (86B):

h;c;i;main(w){for(scanf("%d%d",&h,&w);h;putchar(++i%w/2*c?32:i>w?c=--h-1,i=0,10:42));}

最終日

f:id:wass80:20190408115118p:plain

  • Malbolge以外のすべての言語が埋まる.
    • Malbolgeは提出コードサイズ上限に収まるコードが存在しないと思われる.
    • cmd.exeは出力の改行コードがどうしても\r\nになってしまいACできなかったのを,システム側で修正した.

結果

f:id:wass80:20190408115220p:plain

青チームの勝利となりました.

最終的に参加者は22人.合計AC数は442回でした. たくさんの参加ありがとうございました.

言語ごとの解説はこちらを読んでください: github.com

大会システムを作ってくださっているhakatashiさんに感謝します. github.com

たいへん盛り上がったので,また開催したいです.

DTM練習会 春の成果発表会

こんにちはこんにちは。KMC3回生のKMCid:tronです。こう名乗れるのもこれで最後ですね……

まあそれはそれとして、3/26に春に作った曲を発表する「春の成果発表会」を行いましたのでブログを書きます。

まず最初に、新たな試みである「リレー編曲」の発表会が行われました。これは、

  1. 1番目の人は課題曲を編曲する。
  2. 2番目の人は1番目の人が編曲したものだけを聴いてそれを編曲する。
  3. 以下同様に、n+1番目の人はn番目の人が編曲したものだけを聴いてそれを編曲する。

というものです。2番目以降の人は元々どんな曲だったのか全くわからない状態で編曲するのでさぞ原曲とかけ離れたものができるだろう、と思っていたのですが、果たして結果はと言うと…… 最初のうちこそまだ原型を留めてもいましたが、曲調が変わり、メロディが失われ、最終的には全くの別物と化していました。

KMC部員の持つ多様性や、音楽の可能性がよくわかる素晴らしい試みだった……ということにしておきましょう。

実際の曲は以下のSound Cloud プレイリストにまとめてあります。

soundcloud.com

※私(tron)の曲は2種類あります。間違ってドラム無しで出力してしまったものと、ドラムありで出力したものです。次のtetくんに回した曲は前者なのですが、本来の曲は後者です。ここでは両方聴けるようにしました。"sent"のほうはドラム無し、"true"のほうはドラムありです。

後半はいつもどおり、部員たちが思い思いに作った曲を聴きました。 こちらも多種多様な曲が並び、中にはなんと12分を超えた曲もありました。 みんなの曲を聴いていると自分もがんばろうという気持ちになりますね。

これにて正真正銘、2018年度のDTM練習会は終わりです。

DTM練習会2019は4/10(水)から、毎週水曜日に行われます。興味のある方はぜひ一度練習会や説明会にお越しください。 もちろん、DTM以外の活動に興味のある方も大歓迎です。

春合宿2019を開催しました

こんにちは。

こんにちは。KMCID: inonoa ( id:inonoa ) と申します。三月中旬の春合宿の報告ブログがあろうことか四月下旬まで書けていませんでした。ここにお詫びいたします。

本題

KMCでは毎年春合宿と呼ばれるイベントを行っています。政令指定都市内とは思えない山中にバスで*1集団疎開し、貧弱なネット環境の中自分たちでサーバを立てながら、普段できない長い講座を行っていく四泊五日の合宿です。ここ数年は初日と最終日を除く三日間に講座が詰め込まれていたのですが、今年は参加者や講座が少なく、二日目までが自由時間となりました。各々が講座の準備等の作業、ボードゲーム等思い思いの時間を過ごしていましたが、私含む数名はそれでは飽き足らず、近くの某山への登山を決行。結ばれたロープにつかまって45度を越えようかという斜面を登るなど、他の山での登山や施設のアスレチックで経験を積んだ部員も驚くほどの過酷な道程でした。

二日目の午後にはクイズ大会が開催され、白熱した戦いの後優勝チームに豪華景品が贈呈されました。

三日目からは部員の講座が続きます。

walkure 「想定外な規模へと成長し続けるサービスを支えるサーバ開発・運用の軌跡~DBの縦横分割スケーリング~」

prime 「オセロを速く解く話」

polaris 「ゲームを0.5から作ってわかったこと」

他にも、十数個の講座が行われました。(いろいろな事情により公開されないスライドが多く、少し残念なような残念じゃないような気持ちです。)

最終日には有志によるLT(Lightening Talking)大会の後、優れた講座に贈られる講座アワードの発表・授賞式が行われました。今回は最優秀賞などのいくつかの賞については部員による投票で決定するなど、民主主義の息吹を感じさせる授賞式となりました。

まとめ

今年も平和に、すばらしい春合宿を開くことが出来ました。来年も開催できるといいですね。それでは。

*1:一部は徒歩で

第五回DTM輪読会

繰り返される所業は無情。ナンバーガール再結成しましたね。KMC一回生のid:naka6です。2月の頭からやってきたDTM輪読会もついに最終回を迎えました。もう春休みも半分かと思うと......(吐血)

さて第五回輪読会では、今までやってきたコード進行やAvailable Note Scaleに関する知識を使っていかにメロディーをつけていくかということや、その他の基本的な知識(クリシェやディミニッシュコード)、実際のJazzの曲の分析をしました。

f:id:kmc-log:20190306223919p:plain
古文書のようと称されたスライド

議論が白熱して一日では終わらず、延長戦に突入してしまいましたが、その甲斐もあって少しは賢くなれたかなと思います。

真面目な話はここらへんで終わりにしましょう。みなさんお持ちかねのアレにいきたいと思います。今回は二日に渡って行われたので豪華二本立てです。

f:id:kmc-log:20190305213040j:plain
にぼ次郎の今月の限定麺
f:id:kmc-log:20190306225254j:plain
あくたがわキャベツのせ
面妖な......

はい、二回連続でらーめんです。こいつらいつもらーめんばっか食ってんな

春休み中もKMCのDTMerたちは輪読会をしたり、バンドをしたり、リレー企画が行われたりなかなか充実しています。 KMC全体としても合宿があったりしていい感じですね。  ですがまだ僕は春休み中一曲も完成させていないので春休み後半は強い意思で為していきたいと思います。またこんど!

FPGA勉強会/2019春 第5回・第6回

prime (id:PrimeNumber) です。

昨日・今日でFPGA勉強会の第5回・第6回を行いました。

今回は二日間かけてCPUを実装するというチャレンジを行いました。

実装するISAは京大のCPU実験で用いられているSIMPLE

http://www.lab3.kuis.kyoto-u.ac.jp/~ktakagi/le3a/simple.pdf

や、参加者が独自に作ったISAです。

二日間でCPUを作るのはかなり難易度が高く、残念ながら動作させられなかった参加者もいましたが、私は何とか加算とシフトで乗算を行うプログラムを動作させられるCPUを作れました。

第4回DTM輪読会&バンドやろうぜ

こんにちはこんにちは。KMC 3回生の KMCid:tron です。ちょっと前に DTM 輪読会の第4回をやったのですが、ブログを書き忘れていましたので、今書きました。

今回は「調関係と転調」「Available Note Scale と Tension」について話しました。 転調について詳しくなりたくてここの担当になったのですが、テキストでは2ページ(見開き1ページ)しかなく、あまり詳しくはなれませんでした……

後半については以下の画像がほとんど全てです。短調難しい。

gyazo.com

輪読会のあとは河原町にあるスタジオに行って演奏しました。

f:id:kmc-log:20190302233500j:plain

私はキーボードと、ちょっとドラムもやってみましたが、ドラムは難しいですね。手足がバラバラに全然動きません。もちろん、キーボードは簡単、というわけではないですが……

そのあと、皆は寿司を食べに行きましたが、私は帰って母の作ってくれた唐揚げを食べました。お母さん、いつもありがとう。

f:id:kmc-log:20190302233947j:plain
人々が食べたという寿司

第5回は最終回で、 naka6 くんがメロディーとかの話をしてくれます……と言いたいところですが、実は第5回は今日行われました。いろいろあって最終回ではなくなったりもしましたが、詳しくは近い内に記事が上がると思います。

各回でのメンバーによる議論も活発になり、盛り上がってきました。この調子で高めあっていきたいですね。ではまた。