「#カレンダープログラミング プチコンテスト 2014」ピックアップ Vol. 3

慧: こんにちは! 「カレンダープログラミング プチコンテスト」の応募されたコードをピックアップして紹介していくよ。
今回は3回目! 現時点の応募数も更新してるよ! もう正確な数わからないね……。ピックアップは、コードの処理が他と違って特徴的かな? と思ったものや、おもしろいアイデアを紹介していくよ。
ピックアップは、別にコードの内容が、良い悪いって話じゃないからね! たくさん応募があるから、他の人のコードを参考にアップデートしてもいいし、バグがあったらつっこむのもアリだよ!
Ideone.com コード消失事件!(再掲)
もう一度、お知らせ。コードの公開に Ideone.com を紹介してたんだけど、コードが消える・以前のバージョンに戻る障害があったみたい。カレンダープログラミングの応募も消えちゃってるので、最新のものに更新し直せる人は、元に戻して! あと別の場所に投稿し直すときは、前の関連するツイートにリプライする形でお願い!
現在の応募状況!
10/23 20:50 の時点だよ。とりあえず100件以上! 件数の数え方や粒度はもう気にしないで!
- PowerShell 3件
- Python 4件
- SmileBASIC(プチコン) 1件
- Windows cmd.exe 3件
- C# 6件
- VBA (Excel) 3件
- Android (Java) 1件
- Unity (C#) 1件
- Ruby 4件
- Java 3件
- Pascal 1件
- C 5件
- Perl 5件
- Objective-C 1件
- F# 1件
- PHP 3件
- Tcl 1件
- 一太郎マクロ 1件
- Clojure 1件
- HSP 1件
- PL/SQL 1件
- MSX BASIC 1件
- Forth (GForth) 1件
- Smalltalk 2件
- ASP.NET (C#) 1件
- C# + XAML 3件
- jQuery UI 1件
- N88互換BASIC 1件
- Processing 1件
- C++ 2件
- PostScript 1件
- JR-100 (JR-BASIC) 1件
- N-BASIC 1件
- Prolog 2件
- Lua 1件
- Emacs Lisp 2件
- Shell 1件
- Go 1件
- Brainf*ck 1件
- PC-E500 (BASIC) 1件
- openFrameworks (C++) 1件
- broom 1件
- Transact-SQL 1件
- Haskell 1件
- VB.NET 2件
- D 言語 2件
- FORTRAN 2件
- GBDK (C 言語) 1件
- TypeScript 1件
- ActionScript 1件
- N88-BASIC 1件
- C++ + Boost 1件
- COBOL 1件
- J 言語 3件
- ドリトル 1件
- なでしこ 3件
- C++/CLI 1件
- PC-1260 (BASIC) 1件
- SQL 2件
- GBA ゲームボーイアドバンス 1件
- C++14 + Sprout 1件
- VBA (Word) 1件
- C++ DirectX 2件
- IronPython 1件
- C++ + Win32 API 2件
- Scala 1件
- Windows Store App (C#) 1件
- Biz/Browser 1件
- AutoHotkey 1件
- VBScript 1件
- Java Swing 1件
- C + Win32 API 1件
- Racket 1件
- Node.js (JavaScript) 1件
- WhiteSpace 1件
- Photoshop 2件
- IJCAD (VBA) 1件
- CoffeeScript 3件
- bash 1件
- GNAT(GNU Ada Translator) 1件
- C++ + SDXFramework 1件
- Groovy 1件
- Ada 1件
- AWK 1件
- MASM(DOS) 1件
- ActionScript 2件
- C 言語 1件
- IchigoJam 1件
- LotusNotes 1件
- Dart 2件
- Mind 1件
- PALO ALTO TINY BASIC 1件
みんなのコードを見るには、Togetter まとめ から。
カレンダー表示のオーソドックスな処理の説明は、ピックアップ Vol. 1 を見てみてね。
ピックアップ No.10 Clojure
Clojureで書いてみました。JavaのCalendarを使う以外の方法はあるのかな……https://t.co/JsmWkgQcAD@pronama #カレンダープログラミング
— 森越 一 Hajime Morikoshi (@firstforest) October 13, 2014
今回ひとつ目のピックアップは、Clojure。
https://gist.github.com/kureikei/e99909251a35e6f16f8a
1週目の「余白」と、1日から最終日までの「日」を、ひとつのコレクションにまとめちゃって、そのコレクションを7個区切りにしてるのが、他とは違う特徴かなと思ったよ。
ピックアップ No.11 F#
https://twitter.com/Myoga1012/status/524933959482748928
https://gist.github.com/kureikei/65f78fdf175631af3410
わかりやすい解説付き! 1週目の余白部分は、“負の日”と扱って、余白表示と日の表示をひとつループにまとめてるのが特徴だね。負の数だったら空白を表示。他の言語でも短くできるテクニックかも?
書式 “%3d" を使うと、日と日の間の空白を入れられるけど、日曜の日の左にも余白ができちゃうね。
ピックアップ No.12 Dart
https://twitter.com/laco0416/status/525265286346199040
https://gist.github.com/kureikei/31eff376619bc54d6425
次は Dart! 6週 x 7日分の空白文字が入った2次元のコレクションを作って、日の数字が入る部分を書き換える方法が、特徴的! 6週分あるけど、calendar.where((w) => w.any((d) => d.trim() != ""))
の部分で、全部空白の週は捨てるようにしてるんだね。
ピックアップ No.13 Word VBA
https://twitter.com/Myoga1012/status/523739014415646721
カレンダーを数式の行列に見立てて出力するっていうおもしろいアイデア!
コードは、ちょっと長めなので省略するね。
ピックアップ No.14 Adobe JavaScript
Photoshop Auto Calendar http://t.co/4S6xU1ECm5
おまけ。色が付いたそれなりのカレンダーを自動で作ります。遅いので気長にお待ちください。@pronama #カレンダープログラミング pic.twitter.com/kp2GUJNbYf— ぴこりる (@picolyl) October 21, 2014
今回の最後は、Photoshop のスクリプトでカレンダーを作っちゃう大作! これで印刷するカレンダー自体を作れる…よね?
コードは、これも省略。590行ぐらいだったよ。
というわけで、今回はここまで。まだまだ紹介していくから待っててね!