You are here: Home Blog キミならどう書く 2.0 - ROUND 3 -

Personal tools

Document Actions

キミならどう書く 2.0 - ROUND 3 -

by takano32 posted at 2006-08-20 21:00 last modified 2006-08-21 16:54

LL Ringも開催まであとわずか!

「キミならどう書く 2.0」,前回の開催から少し間が開いてしまいましたが,ROUND 3 を開催します.

今回のお題はグラフです.

いくつかのデータを与えたときにグラフを出力するプログラムを作ってください.細かい仕様はありません.

たとえば以下のようなものです.

% ./graph 2 5 9
  2 : *****
  5 : ************
  9 : ********************

このプログラムでは最大の数値に対応する '*' の数を 20 とし,与えられた数値に応じた数の '*' を出力しています.

余力のある方は派手なグラフを出力したり,数値以外のデータを扱ってみるのも面白いかもしれません.また,ディスク容量やファイル容量などの値を使ってみるのもよいでしょう.

みなさんのプログラムやグラフをお待ちしています.

The URL to Trackback this entry is:

Re:キミならどう書く 2.0 - ROUND 3 -

Posted by dancerj at 2006-08-20 23:36

Cで

/*BINFMTC:
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define max(a,b) ((a) >= (b) ? (a) : (b))

int main(int ac, char** av)
{
int i, sum=0, maxval=0;
const char* graphstr="************************************************************************";
int graphstrlen=strlen(graphstr);
for (i=1; i<ac; (sum+=atoi(av[i])), ++i, maxval=max(maxval,atoi(av[i]))) if (atoi(av[i])<0) exit(1);
for (i=1; i<ac; ++i)
printf("%.2i/%.2i %s\n", atoi(av[i]), sum, graphstr+graphstrlen-1-atoi(av[i])*graphstrlen/sum);
return 0;
}

Re:キミならどう書く 2.0 - ROUND 3 -

Posted by dancerj at 2006-08-20 23:43

しまった、修正
/*BINFMTC:
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define max(a,b) ((a) >= (b) ? (a) : (b))

int main(int ac, char** av)
{
int i, sum=0, maxval=0;
const char* graphstr="************************************************************************";
int graphstrlen=strlen(graphstr);
for (i=1; i<ac; (sum+=atoi(av[i])), (maxval=max(maxval,atoi(av[i]))), ++i) if (atoi(av[i])<0) exit(1);
for (i=1; i<ac; ++i)
printf("%.2i/%.2i %s\n", atoi(av[i]), sum, graphstr+graphstrlen-atoi(av[i])*graphstrlen/maxval);
return 0;
}

'*' でグラフを描くスクリプト @ Ruby

Posted by 32nd diary at 2006-08-21 00:55
参考までにエントリで例示したグラフは以下のスクリプトで出力したものです. #!/usr/bin/env ruby columns = 20 nums = ARGV.collect {|s| s.to_i}   sum = nums.inject(0) do |sum, i| sum = sum + i end   max = nums.max   nums.each do |i| puts '%3d/%3d : ' % [i, sum] + '*' * (columns * (i.to_f/max) ).ceil end   % ./graph.rb 4 6 4 9 4/ 23 : ********* 6/ 23 : ************** 4/ 23 : ********* 9/ 23 : ********************

[プログラム][LL] io + OpenGL = ioDesktop でグラフを描く

Posted by SiroKuroPage at 2006-08-21 16:06
例によって iolanguage にて。 ioDesktop では OpenGL を扱えるので、そっちで描画してみました。 graph.io GLGraphApp := OpenGL clone do( width := 440; height := 320 data := nil GW := 12 font := Font clone open("resources/library/fonts/Free/Sans/Bold.ttf&#

グラフを描く(Mathematica)

Posted by inquisitor at 2006-08-21 18:48
コンソールでやれば次のようになる In[1]:= この企画、Mathemat...

グラフを描く(Mathematica)

Posted by inquisitor at 2006-08-21 18:51
<< Graphics`Graphics` BarChart@{2,...

グラフを描く(SQL)

Posted by inquisitor at 2006-08-21 20:16
SELECT d,RPAD('',20*d/m,'*') n FROM dat,...

キミならどう書く 2.0 - ROUND 3 -

Posted by 西尾泰和のブログ at 2006-08-22 02:56
>>> def graph(xs): print "\n".join([st...

ボクならこう書く

Posted by 只今Ruby勉強中 at 2006-08-23 00:38
LL Ringブログでやってる「キミならどう書く」シリーズで、何でも良いからグラフを作ってみやがれって言うお題があったのでおもしろそうだからチャレンジしてみました。 http://ll.jus.or.jp/2

バッチファイルは Lightwight Language なのでしょうか

Posted by ari at 2006-08-23 12:44
ふと、「Windows のバッチファイルは Lightwight Language なのか」と悩み、書いてみました。「キミならどう書く 2.0 - ROUND 3 -」でグラフを出力するプログラムがお題でしたので作ってみました。Windows バッチなので、Windows 以外の環境では動きません。現在、Windows S

[隠密][LLR-R3]グラフを描く!

与えられた数値を元にグラフを描くアプリを作れ!だそうです。 僕のではこんなグラフが出来ます。 $ ./graph 2 5 9 ********************|

[隠密][LLR-R3]続き

別ヴァージョン造りました。 今度はこんな感じです。 $ ./graph2 2 5 9 ** ***** ********* $ ./graph2 22 25 39 ++** ++***** ++***&#

[隠密][LLR-R3]更に続き--省略形続き

略式表示第二形です。 $ ./graph3 2 5 9 +* +**** +******** $ ./graph3 22 25 39 +* +**** +*****************

LLR2006 - Round 3; perl + javascript

Posted by 404 Blog Not Found at 2006-08-25 13:56
いよいよLL Ringは明日開催のようですが、私は欠席です。期待してた方ごめんなさい。 その代わり竹迫さんがPerlのLanguage Updateをやってくれます。 そういえば私の不在中にもう一問出てましたね。 キミならどう書く 2.0 - ROUND 3 - ? Lightweight Language Ring....

キミならどう書く2.0 ROUND3 「お題はグラフ」

Posted by インプリ at 2006-08-25 15:15
これを見て、LL Ringにはいけそうもないのだが、Pythonで、またやってみ...

[Python / LLRing ] re:君ならどう書く2.0 -Round 3-

Posted by Fomalhaut of Piscis Australis at 2006-08-26 02:55
Python で書いてみる。引数として与えられた数値のうち最大の数値を '*'

Tcl(/Tk) でグラフ

Posted by Rainy Day Codings at 2006-08-27 22:52
Lightweight Language のサイトの「キミならどう書く 2.0 - ROUND 3 -」というトラックバック企画 [1] で今回のお題が「いくつかのデータを与えたときにグラフを出力するプログラム」(細かい仕様無し)ということだった。 今までこの企画で Tcl や Tcl/Tk で参加している人は意外にもいないっぽいので書いてみることにしました(それにこのお題はいかにも Tcl/Tk 向き)。 まずちょっと仕様を制限したもの。キャンバスの幅をはみ出すようなデータは考慮しない。 # graph.tcl pack [canvas .canvas -width 200 -height [expr 20*[llength $argv]] -bg white] set ypos 10 foreach num $argv { .canvas create line 0 $ypos [expr $num*10] $ypos -width 18 -fill blue .canvas create text 2 $ypos -text $num -anchor w -fill white incr ypos 20 } 実行するには wish graph.tcl 2 5 9 18 15 などとする。実行結果はこうなる。 次はちゃんとキャンバスの大きさに合わせて伸縮するようにしたもの。 # graph2.tcl set height 150; set width 200; # キャンバスの大きさ set max [lindex [lsort -integer $argv] end]; # 要素の最大値 set lwidth [expr $height/[llength $argv]]; # 線の取れる太さ pack [canvas .canvas -width $width -height $height -bg white] set ypos [expr $lwidth/2] foreach num $argv { set xpos [expr $width*$num/$max] .canvas create line 0 $ypos $xpos $ypos -width [expr $lwidth-2] -fill blue .canvas cre...

キミならどう書く 2.0 - ROUND 3 -

Posted by Haskell はスケるよ at 2006-09-08 14:05
cf. キミならどう書く 2.0 - ROUND 3 - 前のエントリでは話がBrainf*ck(一応伏せ字にする)にいっちゃったけど,こっちが本題。 まったくもって乗り遅れたけど書いてみた。 import System showStar :: Int -> IO () showStar n = do putStrLn $ (show n) ++ " : &#

[参加者募集/ Python]君ならどう書く? -marge sort-

Posted by Fomalhaut of Piscis Australis at 2006-09-16 22:28
本家 LLRing 風にちょっとした問題で遊んでみようと思います。Python
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
コメントスパム避けのための認証文字列です

Captcha Image