<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>どう書く？org 新着トピック</title><link>http://ja.doukaku.org/</link><description>どう書く？org 新着トピック</description><language>ja</language><lastBuildDate>Fri, 08 Aug 2008 01:24:54 -0000</lastBuildDate><item><title>LL Golf Hole 3 - 13日の金曜日を数え上げる</title><link>http://ja.doukaku.org/197/</link><description>&lt;p&gt;今日から2013年12月31日までの、13日の金曜日とその総数を表示してください。
&lt;/p&gt;
&lt;p&gt;余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
&lt;/p&gt;
&lt;p&gt;※LL Future実行委員の高野光弘です。この出題は &lt;a href="http://ll.jus.or.jp/2008/"&gt;LL Future&lt;/a&gt;公式の出題であり、優れたものについては&lt;a href="http://ll.jus.or.jp/2008/program/doukaku"&gt;LL Golf&lt;/a&gt;のセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、&lt;a href="http://ll.jus.or.jp/2008/ticket"&gt;LL Futureのチケットは現在も発売中&lt;/a&gt;です。よろしければ、メインイベントの方にもぜひご参加ください。
&lt;/p&gt;



</description><guid>http://ja.doukaku.org/197/</guid></item><item><title>tailの実装</title><link>http://ja.doukaku.org/195/</link><description>&lt;div class="section"&gt;
&lt;p&gt;'tail'を実装してください。&lt;/p&gt;
&lt;p&gt;巨大なファイルでも効率的に動作するようにしてください。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;最低限必要な機能は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
行数指定
&lt;/li&gt;
&lt;li&gt;「-f」パラメータの対応&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;です。&lt;/p&gt;
&lt;/div&gt;
</description><guid>http://ja.doukaku.org/195/</guid></item><item><title>LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする</title><link>http://ja.doukaku.org/196/</link><description>&lt;p&gt;文字列に含まれる単語について、それぞれの単語の最初の文字を大文字にしてください。&lt;/p&gt;
&lt;p&gt;たとえば、&amp;quot;LL future&amp;quot; と与えられたときは &amp;quot;LL Future&amp;quot; と出力する。&amp;quot;LL day and night&amp;quot; と与えられたときは &amp;quot;LL Day And Night&amp;quot; と出力する。&lt;/p&gt;
&lt;p&gt;与えられる文字列はリテラルで表記する、標準入力で与えられる、引数で与えられるなどは自由とします。&lt;/p&gt;
&lt;p&gt;余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。&lt;/p&gt;
&lt;p&gt;※LL Future実行委員の高野光弘です。この出題は LL Future( &lt;a class="reference" href="http://ll.jus.or.jp/2008/"&gt;http://ll.jus.or.jp/2008/&lt;/a&gt;
)イベント公式の出題であり、特に優れたものについてはイベント中で紹介されることがあります。ご理解の上、ご投稿ください。よろしくお願いします。&lt;/p&gt;

</description><guid>http://ja.doukaku.org/196/</guid></item><item><title>lessの実装</title><link>http://ja.doukaku.org/194/</link><description>&lt;div class="section"&gt;
&lt;p&gt;'less'を実装してください。&lt;/p&gt;
&lt;p&gt;巨大なファイルでも効率的に動作するようにしてください。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;最低限必要な機能は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
上下スクロール
&lt;/li&gt;
&lt;li&gt;検索&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;です。&lt;/p&gt;
&lt;/div&gt;
</description><guid>http://ja.doukaku.org/194/</guid></item><item><title>LL Golf Hole 1 - tinyurl.comを使ったURLの短縮</title><link>http://ja.doukaku.org/192/</link><description>&lt;p&gt;tinyurl.com( &lt;a class="reference" href="http://tinyurl.com/"&gt;http://tinyurl.com/&lt;/a&gt; )のサービスを利用し、 &lt;a class="reference" href="http://ll.jus.or.jp/2008/info/xgihyo"&gt;http://ll.jus.or.jp/2008/info/xgihyo&lt;/a&gt; というURLを短縮しなさい。tinyurl.comのalias機能は使わないものとする。
なお、参考までに短縮したURLは &lt;a class="reference" href="http://tinyurl.com/5mngx8"&gt;http://tinyurl.com/5mngx8&lt;/a&gt; となる。&lt;/p&gt;
&lt;p&gt;余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてみよ。&lt;/p&gt;
&lt;p&gt;※LL Future実行委員の高野光弘です。この出題は LL Future( &lt;a class="reference" href="http://ll.jus.or.jp/2008/"&gt;http://ll.jus.or.jp/2008/&lt;/a&gt; )イベント公式の出題であり、特に優れたものについてはイベント中で紹介されることがあります。ご理解の上、ご投稿ください。よろしくお願いします。&lt;/p&gt;

</description><guid>http://ja.doukaku.org/192/</guid></item><item><title>2次元ランダムウォーク</title><link>http://ja.doukaku.org/193/</link><description>&lt;div class="section"&gt;
&lt;p&gt;２次元ランダムウォークをつくってみてください。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;＊＊＊＊＊＊&lt;/p&gt;
&lt;p&gt;元は3本建てにしようかと思ったけど、上の一本に絞りました。おまけとして、3本とも下に補足しておきます。作れるようでしたら作ってみてください。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;1.一次元のランダムウォークを作ってください。&lt;/p&gt;
&lt;p&gt;1.1 データファイルに残してください。 フォーマット：時間 位置&lt;/p&gt;
&lt;p&gt;おまけ）&lt;/p&gt;
&lt;p&gt;可視化が簡単な処理系・プログラミング言語でしたら実際に可視化してみてください。フォーマットしたファイルをスプレッドシートやplotutilitiesなどの可視化ソフトを使って、実際に動きをかくにんしてみましょう。:-)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.同じように2次元のランダムウォークを作ってください。&lt;/p&gt;
&lt;p&gt;2.1 1.1と同じようにしてください。&lt;/p&gt;
&lt;p&gt;フォーマット：時間　x位置 y位置&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;3.凝りたければ、アニメーションにするもよし、3次元の動きをとるもよし、自分の想像力がいかせるところまでやってみてください。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%82%A6%E3%82%A9%E3%83%BC%E3%82%AF&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;分からないというヒトへの分かりにくいヒント：&lt;/p&gt;
&lt;p&gt;今の位置から次の時間の位置が決まるのですが、決まりかたが、乱数で一歩後退するか一歩先にいくか?ということをやればよいです。&lt;/p&gt;
&lt;/div&gt;
</description><guid>http://ja.doukaku.org/193/</guid></item><item><title>環境変数の取得</title><link>http://ja.doukaku.org/191/</link><description>&lt;p&gt;コマンドライン引数の取得がありましたが、今回は環境変数の取得をお願いします。&lt;/p&gt;
&lt;p&gt;取得した内容を表示できればよいですが、可能でしたらキーから値を得る手段の実装もお願いします。&lt;/p&gt;

</description><guid>http://ja.doukaku.org/191/</guid></item><item><title>コード圧縮</title><link>http://ja.doukaku.org/189/</link><description>&lt;pre class='compact'&gt;スペースやインデントなど、本来は必要なく開発効率を上げるために記述が許可されている項目について、
それらを可能な限り減らし、コードを短くするコード書いてください。
また、投稿時に対象とする言語と、実際の処理結果を記載できるとわかり易いかと思います。

以下詳細
・全てを行う必要はありません、どこまで行うかは任意です。
・ローカル宣言など、消しても動作に関係のない構文の削除や置き換えを行っても構いません。
・必ず同じ入力に同じ結果が返るのであれば処理内容を変えることもかまいませんが、推奨・強制はしません。
・コンパイラや実行環境に依存する圧縮は避けてください。&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/189/</guid></item><item><title>SIMD命令の利用</title><link>http://ja.doukaku.org/190/</link><description>&lt;pre class='compact'&gt;SIMD命令を利用したコードを書いてください。
要素が整数で、十分に大きい同じ長さの二つの配列を足す操作を行ってください。
(a[i]+=b[i]もしくはc[i]=a[i]+b[i])

また、SIMD命令で実行した場合と、ループで実行した場合の速度差を出してください。&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/190/</guid></item><item><title>クリップボードへの転送</title><link>http://ja.doukaku.org/188/</link><description>
&lt;p&gt;クリップボード(や同等の機能)へテキストを転送するプログラムをお願いします。
   また可能でしたらクリップボードのデータを取り出すプログラムもお願いします。
&lt;/p&gt;
&lt;p&gt;システムに依存する内容ですが、応用範囲が広いと思いましたので出題させてもらいました。
&lt;/p&gt;



</description><guid>http://ja.doukaku.org/188/</guid></item><item><title>比較しないソートの作成</title><link>http://ja.doukaku.org/187/</link><description>&lt;pre class='compact'&gt;ソート対象のデータ同士で一切比較などを行わずにソートし、ソート結果を出力するプログラムを作成してください。条件は以下の通り。
・最低値・最大値・個数・並び替え対象の4つを引数として受け取る
・最大値と最低値はあくまで取りうる可能性であり、実際に出現することを保障するものではない。
・同値が複数出現することがある。
・入出力方法及びフォーマットは自由、関数として実装し引数に渡す形でも良い。
・小数点以下の数値が渡されることはないが、負の数は渡される可能性がある。
・最大値や最低値を元に算出した数値との比較は使用しても問題ありません。
・出来るだけ多様な条件のデータをソートできるアルゴリズムを使ってください(データが多少多いときや一定の並び順だとソート失敗するものはダメ)
・昇順降順はどちらでもかまいません

以下サンプル入出力
&amp;gt;&amp;gt;入力
-1 10 10
-1 9 4 8 9 6 3 9 5 2
&amp;gt;&amp;gt;出力
-1 2 3 4 5 6 8 9 9 9&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/187/</guid></item><item><title>設定ファイルから値を取得</title><link>http://ja.doukaku.org/186/</link><description>設定ファイルから項目名をキーとして値を取得するコードを書いてください。&lt;br/&gt;設定ファイルのイメージも載せてください。&lt;br/&gt;&lt;br/&gt;ここで設定ファイルとは、&lt;br/&gt;　・項目名と値のペアが書いてあるファイル&lt;br/&gt;　・フォーマットはその言語で扱いやすいものでよい&lt;br/&gt;　・コードと分離され、コードに影響を与えずに変更が可能&lt;br/&gt;を条件とします。ファイルが難しければ同等のものでもかまいません（テーブル、環境変数など）。&lt;br/&gt;&lt;br/&gt;例）&lt;br/&gt;----&lt;br/&gt;ファイル：ShowPrice.ini&lt;br/&gt;ITEM_NAME=りんご&lt;br/&gt;ITEM_COST=200&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;nbsp;showPrice()&lt;br/&gt;「りんご」は210円（税込み）&lt;br/&gt;----&lt;br/&gt;ITEM_NAME=みかん&lt;br/&gt;ITEM_COST=100&lt;br/&gt;&lt;br/&gt;&amp;gt;&amp;nbsp;showPrice()&lt;br/&gt;「みかん」は105円（税込み）&lt;br/&gt;
</description><guid>http://ja.doukaku.org/186/</guid></item><item><title>コメントの削除</title><link>http://ja.doukaku.org/185/</link><description>&lt;pre class='compact'&gt;ソースコードからコメント部分を削除するプログラム decomment を書いてください．
すくなくとも，decomment を記述したのと同じ言語で書かれているソースコードが
扱えるようにしてください．



&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/185/</guid></item><item><title>ミリ秒まで含んだ時刻文字列</title><link>http://ja.doukaku.org/184/</link><description>&lt;p&gt;YYYY年mm月dd日HH時MM分SS.xxx秒なら、「YYYYmmddHHMMSS.xxx」のようにミリ秒まで含んだ文字列を返すプログラムを書いてください。&lt;/p&gt;

</description><guid>http://ja.doukaku.org/184/</guid></item><item><title>コード中の文字の頻度分析</title><link>http://ja.doukaku.org/181/</link><description>&lt;div class="section"&gt;
&lt;p&gt;プログラムコード中の文字の頻度は言語によって相当にばらつきがあると思います。ある言語はピリオドが頻出するとか、別の言語はカッコの頻出頻度が高い、とか。そこで、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 文字の頻度解析をするプログラムを作成し、
&lt;/li&gt;
&lt;li&gt; 適当なプログラムに対して実行し、結果を出力して、そのような頻度になっている理由を教えてください。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(その言語で書かれた「典型的な」プログラムコード、といえるようなものがあると良いのですが・・）&lt;/p&gt;
&lt;p&gt;簡単すぎるという方は、複数文字にしてみたり単語の頻度にしてみてください。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;参考；Wikipedia 頻度分析&lt;/p&gt;
&lt;p&gt;http://ja.wikipedia.org/wiki/%E9%A0%BB%E5%BA%A6%E5%88%86%E6%9E%90&lt;/p&gt;
&lt;/div&gt;
</description><guid>http://ja.doukaku.org/181/</guid></item><item><title>リストの並び</title><link>http://ja.doukaku.org/183/</link><description>&lt;pre class='compact'&gt;数値のリストがあります。リストのサイズは N です。
ls[0]がリストの先頭要素、ls[N-1]が最後の要素です。

問題: 入力として与えられたリストが次の条件を満たすかどうかを求めてください。

for (int i = 0; i &amp;lt; N-1; i++) {
  ls[i] != ls[i+1] である
  ls[i] &amp;lt; ls[i+1] なら、ls[i] &amp;lt; ls[k] である(for all k = i+1 to N-1)
  ls[i] &amp;gt; ls[i+1] なら、ls[i] &amp;gt; ls[k] である(for all k = i+1 to N-1)
}

N の範囲は 3 &amp;lt;= N &amp;lt;= 50000 です。実行例を示します。

&amp;gt; check([1, 5, 4, 2])
True
&amp;gt; check([1, 2, 3])
True
&amp;gt; check([825, 102, 811, 140, 812, 125, 263])
False
&amp;gt; check([824, 102, 811, 140, 810, 155, 263])
True
&amp;gt; check([5, 4, 3, 2, 1])
True
&amp;gt; check([4, 2, 5, 3, 1])
False&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/183/</guid></item><item><title>憂鬱な勇者</title><link>http://ja.doukaku.org/182/</link><description>&lt;p&gt;RPG他の要素を全て省略してレベルアップだけするプログラム。自動またはユーザからのアクションによって、RPG風の経験値の獲得とレベルアップメッセージを出力します。&lt;/p&gt;
&lt;p&gt;元祖のソースコードは Ruby で書かれています。&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://d.hatena.ne.jp/hrkt0115311/20080527/1211891558"&gt;http://d.hatena.ne.jp/hrkt0115311/20080527/1211891558&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;出力はほぼ原典どおりですが、それぞれの言語の特徴にあわせた処理の仕方で書いてみるとどうなるでしょうか（オブジェクト指向、再帰処理が書きやすい、など）。&lt;/p&gt;
&lt;p&gt;これまでの言語別移植リストはこちらに掲載されています。&lt;/p&gt;
&lt;p&gt;&lt;a class="reference" href="http://d.hatena.ne.jp/keyword/%cd%ab%dd%b5%a4%ca%cd%a6%bc%d4"&gt;http://d.hatena.ne.jp/keyword/%cd%ab%dd%b5%a4%ca%cd%a6%bc%d4&lt;/a&gt;&lt;/p&gt;

</description><guid>http://ja.doukaku.org/182/</guid></item><item><title>循環関数</title><link>http://ja.doukaku.org/180/</link><description>&lt;pre class='compact'&gt;整数nを与えると　範囲lowからhigh内での位置を返すmodular関数を作ってください。
(
  low &amp;lt;high かつ　n=0のとき low　を返す

    n = 1 のとき low + 1　を返す。
    n = high　－ lowのときhighを返す。
    n = high　－ low  + 1 のときlowを返す。
       （循環　：　例＊　を参考にしてください） 
    n = high　－ low  + 2 のときlow+1を返す。


    n = 整数 * （high　－ low）  + 1 のときlowを返す。
    n = 整数 * （high　－ low） のときhighを返す。
    n = 整数 * （high　－ low）  + 2 のときlow+1を返す。
....循環の繰り返し
)


例
  modular(n,low,high) -&amp;gt; 出力

  modular(0,100,200)    -&amp;gt; 100

  modular(50,100,200)   -&amp;gt; 150
  modular(100,100,200)  -&amp;gt; 200

  ＊例
  modular(101,100,200)  -&amp;gt; 100
  
  modular(-1,100,200)   -&amp;gt; 200
  modular(1,-5,200)     -&amp;gt;  -4
  modular(-500,-5,-1)   -&amp;gt;  -5
&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/180/</guid></item><item><title>出力の一時停止と再開</title><link>http://ja.doukaku.org/179/</link><description>
&lt;p&gt;起動すると、標準出力に1秒毎に'a'の1文字を出力し続けるプログラムで、
   以下の条件を満たすものを「どう書く？」
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     'q'キーが押されるとプログラムは終了する
 &lt;/li&gt;

 &lt;li&gt;
     出力中に'p'キーが押されると一時停止する
 &lt;/li&gt;

 &lt;li&gt;
     一時停止中に'p'キーが押されると出力を再開する
 &lt;/li&gt;
&lt;/ul&gt;



</description><guid>http://ja.doukaku.org/179/</guid></item><item><title>親子のペアからツリーを構築</title><link>http://ja.doukaku.org/178/</link><description>&lt;pre class='compact'&gt;親子ペア定義群からツリー構造をつくります

・親子ペア定義
※親-&amp;gt;子
A-&amp;gt;B
B-&amp;gt;C
C-&amp;gt;D
C-&amp;gt;E
A-&amp;gt;F
D-&amp;gt;X
Y-&amp;gt;Z
Z-&amp;gt;C

・ツリー
A
-&amp;gt;B
  -&amp;gt;C
    -&amp;gt;D
      -&amp;gt;X
    -&amp;gt;E
-&amp;gt;F
Y
-&amp;gt;Z
  -&amp;gt;C
    -&amp;gt;D
      -&amp;gt;X
     -&amp;gt;E&lt;/pre&gt;
</description><guid>http://ja.doukaku.org/178/</guid></item></channel></rss>