Hatena::Groupnadesiko

99円のへたれ学習帳

2011-05-22

sleep sort

| 21:10

http://d.hatena.ne.jp/gfx/20110519/1305810786

sleep sortいうソートアルゴリズムが話題になっているようなので、なでしこでも書いてみました。

タイマー部品にポケットがないので、こだけ拡張したPタイマーを定義して使っています。

# スリープソート  99yen 2011/5/22

ソート対象=「5,3,6,3,6,3,1,4,7」を「,」で区切る
N=ソート対象の要素数

# ソート済みの個数
CNT=0
# 係数 待機秒=対象*C
C=0.1

ソート対象を反復
	ソートタイマー[回数-1]をPタイマーとして作成
	ソートタイマー[回数-1]→間隔=対象*C
	ソートタイマー[回数-1]→ポケット=対象
	ソートタイマー[回数-1]→時満ちた時は~
		自身→停止
		自身→ポケットを表示
		CNT=CNT+1
		もし、CNT>=Nならば、「ソート完了」と言う
	ソートタイマー[回数-1]→開始

■Pタイマー +タイマー
	・ポケット

f:id:kyuuzyuu9yen:20110522211010p:image

こいつ…動くぞ!w

ElsieElsie2014/07/21 16:00Glad I've finally found sonemhitg I agree with!

2010-07-21

ぼくのかんがえたさいきょうのなでしこ2

| 21:24

半年以上もこの日記を書いてなかったのですね(^ ^; 学校の課題ではC言語ばっかり書いています…orz

いうことで、最近盛り上がりを見せているなでしこ2について、新機能(文法)案をば。

 

現在のなでしこは、配列ハッシュ関連が少し弱いと思うので、まずはの辺についていくつか。

変数の型を厳密にしたい(は宣言はできるが意味がない

  配列文字列をきちんと区別できるようにしたい

  「配列開く」などの命令を追加すれば、使い勝手は変わらないはず

配列ハッシュに値を一括代入したい

ARRAY = {2, 4, 6}  // C言語風
果物は{「りんご」,「みかん」,「ぶどう」} 

ハッシュループ構文がないので、「反復」でハッシュも扱えるとうれしい。

HASHを反復
  「{キー}:{対象}」を表示

 

のほかについて

・可変長引数をサポートしてほしい。ただし関数型呼出し専用。関数の宣言についてはまだ議論がありそうですが…

●printf(format,{可変長}varlist)

これでvarlistに配列で入るとか。でも、配列を上記のように{}で書ければ

{「りんご」,「みかん」}を「%s %s」で整形表示

とできるので、いらないもしれません。配列の記法についてはもっとうまい方法がありそうです。

U D U D 2010/07/22 01:27どもども。多分配列/ハッシュリテラルについては、JSON 記法で確定済みだと思います。
なので、C 言語の初期化子に慣れていると違和感があるかもしれませんが、
Aとは配列 = [1, 2, 3]
Bとはハッシュ = {"a": 10, "b": 100}
のような感じになると思います。

ハッシュのループはいいですね!欲しいです。

可変長引数の実装は難しいかもしれません。そうでなくとも、あの辺は
引数の助詞問題や、オーバーロードを実装するかなど他の問題が山積してる?ので。。。

ではではー

kyuuzyuu9yenkyuuzyuu9yen2010/07/22 11:04どうもですー
あっ、配列リテラルは例の案に書いてありましたね。JSON記法はシンプルで良い感じですね。

さすがに可変長引数は余計な機能かもですね(^ ^; 一番最後のように書ければ問題ないわけで。関数オーバーロードのほうが必要かも…。

nade_sochanade_socha2010/07/22 11:11変数の型指定は要望がありそうですね。
暗黙の型変換は便利な反面、誤作動の原因ともなりますので、
上級者向けに「!変数の型指定は必要」みたいなことも
あれば良いと思います。

kyuuzyuu9yenkyuuzyuu9yen2010/07/22 15:03「!変数宣言が必要」で変数型の強制もセットでいいかなぁと思います。
ハッ、もしかして「Aとは変数」はこのときのために用意してあったのですかね!?

JessJess2012/03/26 13:21I spupsoe that sounds and smells just about right.

woilwabcwoilwabc2012/03/27 07:23UxcUA8 <a href="http://lomxesqstnpy.com/">lomxesqstnpy</a>

ocsxqyzxlocsxqyzxl2012/03/27 11:47kcuH97 , [url=http://rcnergfhlqya.com/]rcnergfhlqya[/url], [link=http://frjknxzpxogp.com/]frjknxzpxogp[/link], http://xtcwwscecgzk.com/

tunzbsqttunzbsqt2012/03/27 17:52kaYu7b <a href="http://gkukzjtlcsno.com/">gkukzjtlcsno</a>

2009-12-10

なでしこ更新情報botを作りました

| 17:08

twitterでなでしこの更新情報をつぶやくbotを作りました。よろしければお使いください。

http://twitter.com/nako_verup

なでしこの関連情報もつぶやけたらいいなと思いますが、実現はいつになるやら…

※特にOldNadesikoと連動してるわけではないです

AlynAlyn2011/07/12 01:36That's the best aneswr of all time! JMHO

pqhtrsfllpqhtrsfll2011/07/12 16:46eK78Ue <a href="http://dtfjflrajyzf.com/">dtfjflrajyzf</a>

kztxtiezmedkztxtiezmed2011/07/14 18:107b8GQq <a href="http://xnwgomoocpxl.com/">xnwgomoocpxl</a>

jkvjwfjkvjwf2011/07/14 22:356zaRKH , [url=http://vbadmmwranpm.com/]vbadmmwranpm[/url], [link=http://vwecprmvnauc.com/]vwecprmvnauc[/link], http://iidmcvvuhimx.com/

2009-11-02

Windows7

22:24

Windows7 HomePremium 64bit版を購入。なでしこはRC版でも動いていたので、当然と言えば当然ですが、製品版でも動きました。

f:id:kyuuzyuu9yen:20091102222203p:image

nade_sochanade_socha2009/11/02 23:21検証ありがとうございます!
これで安心して64bit版が買えますよ~

AndrescamiloAndrescamilo2013/03/04 18:08At last! Somneoe who understands! Thanks for posting!

ucebopngucebopng2013/03/07 21:20iE2dKA <a href="http://cutrunpryqtq.com/">cutrunpryqtq</a>

meptdlyvrmjmeptdlyvrmj2013/03/09 12:25CJuyMO , [url=http://dbfbjdyvatpf.com/]dbfbjdyvatpf[/url], [link=http://vpepqkdjente.com/]vpepqkdjente[/link], http://iazvcjnmothe.com/

AdhiaAdhia2015/08/29 15:17Thanks for shnrgai. What a pleasure to read!

2009-10-25

問題

| 15:59

問1

名前を尋ねて、の人に挨拶するプログラムを書いてください。

命令:「尋ねる」「言う」「(文字列連結)」

余裕があれば:エディタ部品やボタン部品も使ってみてください。

問2

ひつじを1秒ごとに10匹数えるプログラムを書いてください。

余裕があれば:しゃべらせてみてください。

問3

年を尋ねて、の年の13日の金曜日をすべて表示するプログラムを書いてください。

問4

九九の表を表示するプログラムを書いてください。数字は揃えて表示してください。

命令:「繰り返す 構文」「継続表示」「改行(定数)」

ヒント:「継続表示」は文字を表示した後、改行ない命令です。

問5

なでしこがインストールされているフォルダ以下に含まれているすべての「.nako」ファイルのファイル名と、の個数を表示するプログラムを書いてください。

ヒント:なでしこのインストールされているフォルダは「ランタイムパス」です。

問6

コンピュータとじゃんけんをするプログラムを書いてください。ただし、人対人用にも改造できるようにしてください。

命令:「ボタン選択

ヒント:勝ち負けの判定は、手を数に変換すると簡単になります。

問7

3桁の数を尋ねて、それを漢数字に変換するプログラムを書いてください。

(例:256→二百五十六 101→百一)

余裕があれば、3桁以外の数にも対応させてみてください。

回答

| 21:34

答1

「お名前は?」と尋ねて名前に代入。
「{名前}さん、こんにちは!」と言う。

答2

エージェントマーリン召喚
10回
  「ひつじが{回数}匹」をエージェント言う
  1秒待つ
エージェント終了

MS Agentのマーリンを使用しました。声を出すには、必要なファイルを以下のページを参考にインストールしてください。

http://codezine.jp/article/detail/867?p=2

答3

「何年を調べますか?」と尋ねて年に代入
12回
  調査日は「{年}/{回数}/13」
  もし、調査日の曜日が「金」ならば
    調査日を表示

答4

Iで1から9まで繰り返す
	Jで1から9まで繰り返す
		I*Jを3で文字列右寄せして継続表示
	改行を継続表示

ただ単に答を表示しただけでは表が綺麗にろいません。のため、「文字列右寄せ」で整形しています。

答5

ランタイムパス&「*.nako」の全ファイル列挙
NAKOファイル=それ
ファイル数=NAKOファイルの要素数
NAKOファイルを言う
ファイル数を言う

会場では反復していちいち比較する方を紹介しましたが、こちらの方が明らかにスマートですね…

全ファイル列挙を使わないで書いてみると再帰関数の勉強になるかもしれません。

答6

人間手=「じゃんけん!」を「グー
チョキ
パー」でボタン選択
人間手の「グー」を0に置換
人間手=人間手の「チョキ」を1に置換
人間手=人間手の「パー」を2に置換

コンピュータ手=3の乱数
コンピュータ手を表示
(人間手-コンピュータ手)で条件分岐
	0ならば
		「あいこ」を表示
	1ならば
		「負け」を表示
	2ならば
		「勝ち」を表示
	-1ならば
		「勝ち」を表示
	-2ならば
		「負け」を表示

このソースでは少々泥臭いのですが、下のクジラさんのソースのように「(先手N - 後手N + 3) % 3」とするとたったこれだけで勝ち負けを判定できます!

答7

数字=「数は?」を尋ねる
漢数字=「,一,二,三,四,五,六,七,八,九」を「,」で区切る
漢字位=「百,十,」を「,」で区切る
3回
	数字の回数から1文字抜き出す
	もし、それ<>1 || 回数=3ならば
		漢数字[それ]を継続表示
	漢字位[回数-1]を継続表示

無量大数まで対応したバージョンがどう書く?orgにあります

http://ja.doukaku.org/comment/4530/

kujirahandkujirahand2009/10/25 16:01===
「名前は?」と尋ねる。
「{それ}さん、こんにちは」と言う。
===
普通ですが・・・

kujirahandkujirahand2009/10/25 16:04問2:
~~~~~
!「aquestalk.nako」を取り込む
10回
  母艦=回数
  「ひつじ;が」とAQT話す
  「<NUMK VAL={回数} COUNTER=ひき>」とAQT話す
  1秒待つ。
終わる。
~~~~~

kujirahandkujirahand2009/10/25 16:41問6 じゃんけんプログラム
~~~
#-----------------------------------------------------------------------
# じゃんけんプログラム
#-----------------------------------------------------------------------
相手一覧=「人間
コンピューター」

手一覧=「0:ぐー
1:ちょき
2:ぱー」

「誰と勝負しますか?」を相手一覧で、
ボタン選択して相手に代入。

真の間
 勝負実行
 勝負判定
 「続けますか?」と二択。
 もし、それがいいえならば、終わる。

●勝負実行
 「先手:どの手を出しますか」を手一覧でボタン選択して、
 先手に代入。
 もし、相手=「人間」ならば
  「後手:どの手を出しますか」を手一覧でボタン選択して、
  後手に代入。
 違えば
   手番号=3の乱数
   後手=手一覧¥手番号
 
●勝負判定
 先手N=INT(先手)
 後手N=INT(後手)
 判定番号は、(先手N - 後手N + 3) % 3
 判定番号で条件分岐
  0ならば
   結果=「あいこ」
  1ならば
   結果=「後手の勝ち」
  2ならば
   結果=「先手の勝ち」
 「先手:{先手} 後手:{後手}」を表示
 「結果:{結果}」を表示。
#-----------------------------------------------------------------------

kujirahandkujirahand2009/10/25 16:42問7 3桁限定とのことで、以下のように。本来は、割ってくと良いのですが・・・
~~~
候補=「,壱,弐,参,四,五,六,七,八,九」を「,」で区切る。
「数字を入力してください」と尋ねて、NOに代入。
NOを文字列分解
「{候補\それ\0}百{候補\それ\1}十{候補\それ\2}」を表示  
~~~

kujirahandkujirahand2009/10/25 16:44問4
~~~
LIST=ランタイムパス&「*.nako」の全ファイル列挙
F個数=LISTの要素数
「ファイルの個数:{F個数}
{LIST}」をメモ記入。
~~~

nade_sochanade_socha2009/10/30 18:20問4
「回」を使うと、「回数」が混乱するということですが、
変数を使うことで回避できます。
~~~
文字サイズは12
9回
  Tateは回数。
  10,Tate*30へ回数を文字表示。
  Tate*50-10,0へ「{回数}の段」を文字表示。
  9回
    Yokoは回数。Kekka=Tate*Yokoを2で文字列右寄せ。
    Yoko*50,Tate*30へKekkaを文字表示。
~~~

MusbauMusbau2012/03/26 18:26There are no words to describe how bdoacious this is.

pgqkzqrfhrpgqkzqrfhr2012/03/28 08:32BaNCyg , [url=http://crektuepblbg.com/]crektuepblbg[/url], [link=http://keiuxdrlhjgl.com/]keiuxdrlhjgl[/link], http://ekqugbkcooat.com/

rzsaqzrzsaqz2012/03/28 15:03jdyw6Y <a href="http://dhabbkooczwv.com/">dhabbkooczwv</a>