/* 簡単なプログラムをウプしよう */at GAMEDEV
 /* 簡単なプログラムをウプしよう */ - 暇つぶし2ch129:>>128
02/07/18 16:25
いろいろと入力してみたけどコンピューターで
計算できる形になってるみたいだしいいんじゃない?
ソースについてのコメントは控える。(w

130:名前は開発中のものです。
02/07/18 21:01 eG1jD3wM
URLリンク(merosuke.tripod.co.jp)

131:名前は開発中のものです。
02/07/18 21:29
>>129
コメントありがとうございます。少しだけ自信がつきました…

今のところはバグが見当たらないので
逆ポーランド記法の式を計算する関数も作ってみました。
入力された式を逆ポーランド記法に変換して表示し、計算結果も表示されます。
C言語です。

ソース
URLリンク(www.geocities.co.jp)
実行ファイル
URLリンク(www.geocities.co.jp)

動作などに関する意見や質問があったらよろしくお願いします。

132:名前は開発中のものです。
02/07/18 21:32
>>130
落としてみたのですが、エラーが出て実行できませんでした。

あと、何かを貼り付ける時は簡単なコメント・説明を添えるように
してください…おねがいします。

133:名前は開発中のものです。
02/07/18 23:33 KrSipdXM
ちょっとソースが汚いかも。
GetPriorityOperator関数でcase文使っているけど、この使い方だったら、
if文使った方がまとまると思うよ。あと、再起してる関数じゃないなら、
部分部分にreturn入れないで、retとかいう変数つくって、
そこに戻り値入れて最後に返してやるようにする。

int GetPriorityOperator(char op)
{
int ret = 0;

if(op == '*') ret = 10;
else if(op == '/') ret = 10;
else if(op == '+') ret = 8;
else if(op == '-') ret = 8;
else if(op == '\0') ret = 0;
else if(op == ')') {printf(")"); ret = 0;}
else printf("GetPriorityOperator(char op); 不正な引数\n");
return ret;
}

134:名前は開発中のものです。
02/07/18 23:37
生成されるコードを考えると、そこのソースは元のままでいい。
出来れば、defaultは除去してその前の段階でキャラクタ検査をした方が良い。

135:名前は開発中のものです。
02/07/19 08:47
>>133-134
レスありがとうございます。

まずは、見やすいプログラムを書くように心がけます。
僕は、まだ生成されるコードの効率とかを
考えるレベルには至っていないのかもしれません…
効率について検索してみたのですが、

>switchは if - elseif …のチェイン(cmp xx jz xx ...)に展開されることもしばしばで、
>こんなものになってしまったらジャンプテーブルに比べて圧倒的に速度が低がするのは想像に硬くありません。
>例えば、switch文の最後に
>  default:
>    __assume(0); // (VCの拡張機能、ここに来ることは有り得ないと言う事)
>等としてやるとVCに於いてはほぼ確実にジャンプテーブルに展開されるようになります(なるそうです…)。

というのがありました。

136:名前は開発中のものです。
02/07/19 09:45
というか、生成されるコードならテーブルに展開するのが一番速いけどな

137:名前は開発中のものです。
02/07/20 14:19
C言語。オセロ。某所より。見て氏ね。
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}

138:名前は開発中のものです。
02/07/20 20:43
>>137
すごいですね。
俺が授業で書いたオセロは200行ちょい。
このプログラムを改行とかしたら40行弱。

・・・あと4年間で何とかしないとな。

139:名前は開発中のものです。
02/07/20 23:29
つーか、このオセロはかなり上級者の書いた物だろ
7行スレでも有名な人が書いた物。

140:名前は開発中のものです。
02/07/21 00:04 VfOHqT.A
言語の仕様を熟知していれば
ある程度は可能だと思うが。
別にレベルがどうこうじゃないような。
>>137みたいなのはオジさん同士で見せ合うのは
たのしいんだけど、若い人は興味無いんじゃないか?
基本的に「実用テクニック」にはなり得ないから。

141:名前は開発中のものです。
02/07/21 00:12
>>140
勝手に言ってくれるなー
俺もいいかげんおじさんなのか。

142:名前は開発中のものです。
02/07/21 00:26
sou desu YO!

143:名前は開発中のものです。
02/07/21 00:34
あのオセロは割り切り方が凄いんだよ。
実装範囲を選んで、機能を限定してそれ専用にチューニングしてる。
こういうことは結構重要で、出来ない奴は結局ここの技術にこだわりすぎて
全体的に効率悪い物しか作れない。
小手先のテクニックも使ってるけど、それだけだと思ったら大間違いだよ。

144:名前は開発中のものです。
02/07/21 00:37
>>142
10代でおじさんと言われるとは思わなかったYO!

145:140
02/07/21 00:42
>141=138か?
>137のは実行してないからよく分からんが
オセロを満たすのに必要最低限のことしかやってないだろ。多分。
そんなのに興味を持つくらいなら思考ルーチンのひとつやふたつ
を作ってみた方がいいですよ。何年かやってれば自然に出来るようになるし。
駆け出しのうちは手に届くものを優先。

>>143
まあ、これが出来なければあれが出来ない、みたいな話は止めましょうや。

146:名前は開発中のものです。
02/07/21 00:50
>>145 >141=138か?
違う

>のは実行してないからよく分からんが
実行しろよタコ
何もしないで人のプログラムを語るな。
PC対戦付きだボケ

147:名前は開発中のものです。
02/07/21 00:58
140は、「あんなの凄くねぇ。俺のほうが凄いYO!」って自慢したいだけなんだから、そっとしとこうや。

148:140
02/07/21 09:20
>PC対戦付きだボケ

その位は見ただけで分かるよ。

でも、どの程度のチェック漏れがあるのかは分からない。
相変わらず実行はしていないから分からないが
おそらく比較的、遭遇頻度の低いバグは無視しているのだろう。
七行スレって言うくらいだからそんなことを言うのは野暮なんだろうが。
トイプログラムとして見れば面白いし、レベルも高いと思う。

煽る人が居るし、これで最後にする。

149:名前は開発中のものです。
02/07/21 09:58
まぁ、なんつーか、思考ルーチンなんて何年やっても自然に出来るもんじゃないよな
簡単な(要するにテキトーな)思考ルーチンや単なる総当たりなら出来るかも知れないが、
有名なαβ法なんかは自然に思いつくたぐいの物でもないしな。
理論的な思考ルーチンなんかはひとつやふたつなんて言うほど簡単に作れるもんでもない。

150:名前は開発中のものです。
02/07/21 12:28
口を動かすくらいなら手を…ってことじゃないか?
若い人って”出来ないからやらない”じゃん。それはイクナイ。

151:138
02/07/26 03:09
>>145
オセロの思考は趣味のほうで作りましたね。
自分よりは強いけど、どの程度かは分かりませんです。

まだ137のプログラムが読める程度なので4年後が心配だったけど、
上級者と知って少し安心です。
でもプロのレベルがいまいち分からないからやっぱりかなり不安・・・。

学生に>>137を見てほしいからage

152:名前は開発中のものです。
02/07/26 08:43
>>140
むしろ若い人ほど7行でどんなことができるかとか燃えそうな気がするなぁ
64kメガデモみたいなもんですかな

153:おもしろいものが
02/08/12 16:52
見たいのでage。

154:名前は開発中のものです。
02/08/12 17:27
見たい見たいと騒ぐだけで何も作らないクレクレ厨が発生したので sage。

155:名前は開発中のものです。
02/09/02 20:54
>>149
普通のオセロは通常読みと必勝読みと完全読みの3ルーチン持ってると思う

156:名前は開発中のものです。
02/10/13 14:20
>>131のアルゴリズムって
あれで正しいのですか?
実行してみたんですけどちゃんと動いるみたいでした。
今までノベルゲームくらいしか作ったことが無く
こういうプログラムやったこと無いので興味を持ちました。

157:名前は開発中のものです。
02/10/13 15:59
RPG風ダンジョン。DOS/Win用。2468で移動、数字なのが敵、
たおしてくと階段 '/' がでてきて、接触で次フロアへ。終わりはq。

int m[9801],X,Y,a,b,i,j,k,l=99,U[99],V[99],W[99],g,h;E(x,y){for(k=1;k<99;++k)if
(U[k]==x&&V[k]==y&&W[k])return k;return 0;}D(){printf("\n%dHP M=%d %dF\n",l,g,h
);for(j=-3,i=0;i<49;++i){a=X+j;b=Y+i/7-3;putchar(i==24?64:E(a,b)?W[E(a,b)]+48:G
(a,b));j=i%7<6?j+1:(putchar(10),-3);}}G(x,y){if(E(x,y))return (l-=W[E(x,y)])<=0
?exit(puts("YOU LOST\n")):0,--W[E(x,y)]?0:++g,(m[R(49)*2+R(49)*198+g%2*198]=47)
,35;return x<0||x>98||y<0||y>98?35:m[x+y*99];}R(n){return rand()%n;}N(){++h;g=0
;for(i=0;i<99;++i){U[i]=R(99)*2,V[i]=R(99)*2,W[i]=R(8)+1,m[R(49)*2+R(49)*198+i%
2*198]=35;for(j=0;j<99;++j)m[i+j*99]=(i%2+j%2)>1?R(4)<3?35:46:46;}}M(x,y){i=x+X
;j=y+Y;G(i,j)==47?N():G(i,j)==35?0:(X=i,Y=j);}main(){N();for(;;){D();k=getch();
k==56?M(0,-1):k==54?M(1,0):k==52?M(-1,0):k==50?M(0,1):k==113?exit(0):0;}}


158:名前は開発中のものです。
02/10/13 23:40
>>157
マップ広すぎ。
あと、視野(見える範囲)はもっと広くていいと思うぞ。


159:(   ○   ´ ー `   ○   )
02/10/14 13:41 oQUDul00
ちょっと太っちゃった…

160:名前は開発中のものです。
02/10/14 14:11
(    ○    ´ ー `    ○     )

161:名前は開発中のものです。
02/12/20 00:56 TnNLuwnN
ざっと読んでみたんですが少し勉強になりました。
期待ageさせて下さい!

162:名前は開発中のものです。
02/12/20 01:27 hsTe63tg

<   終 了ーーーーーーーーーーーーーーーー!!!!

  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^―/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllllllllllllll|           ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕          :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\
       ヽー─¬ー~ー―― :::::::::::::


163:名前は開発中のものです。
03/09/15 23:31 cjbTqAlp
age

164:名前は開発中のものです。
03/09/16 17:36 rZAhYual
探知キボーヌ
ネタ

165:名前は開発中のものです。
03/09/16 17:45 EQhFXA4K
空AGE やめーい!

166:名前は開発中のものです。
03/09/17 00:42 /Dz3qKwA
このスレで聞くもんでもないと思うんだが、
sageててもIDが出る人と出ない人がいるのは何故?

167:名前は開発中のものです。
03/10/25 16:28 w+myaAmJ
>>166
頭がいい人と悪い人の違い

168:名前は開発中のものです。
03/11/14 15:17 4meSYN3s
>>131のソース

if(GetPriorityOperator(stack[stack_pos]) >= GetPriorityOperator(str[i])){
  newstr.str[newstr_pos++] = stack[stack_pos--];
  newstr.str[newstr_pos++] = ' ';
}else if(GetPriorityOperator(stack[stack_pos]) < GetPriorityOperator(str[i])){
  stack[++stack_pos] = str[i];
  break;
}

プライオリティが等しいときも演算子スタックにつまなきゃだめじゃない?
上記だと計算結果はあうけど逆ポーランド法表記的にまずくない?

169:名前は開発中のものです。
04/08/01 21:49 V3JnTtE5
>>157
うおお、初心者の俺からしてみればすごい・・・。
少し前に長方形領域の移動プログラム(ただ単に移動するだけ)つくってみたけど、
それなんか200行以上もあるよ・・・(>>157は見やすいように整えて60行ほど)。
まだまだだなぁ・・・。ってまだCの教科書を1冊も終わらせてないんだけどね。
ポインタの恐ろしさもまだぜんぜんわかんないし。

170:169
04/08/01 21:51 V3JnTtE5
解読しようと思っても今の俺の知識じゃ無理だな

171:名前は開発中のものです。
04/08/01 22:00 V3JnTtE5
うわっ。過疎スレということに今気づいた。
age

172:名前は開発中のものです。
04/08/03 14:15 pwgXpzV7
>>157のソースを
わかりやすく整形してみました。
URLリンク(do.sakura.ne.jp)
基本的にオリジナルアルゴリズムに忠実な形での整形ですが
以下の2点で手を加えています。

・ワーニングを完全に排除するために
メインループからのエスケープにgoto文を追加。
・画面クリアのためのsystem("CLS")を追加。

173:名前は開発中のものです。
04/08/04 18:06 2FqsG8xs
>>172
おつ!見やすい!役立たせていただきます!

174:172
04/08/04 19:12 k/+0Z3FN
お。見てくれた人がいてヨカタ


ささ、愉快な短いプログラムきぼんぬ。
おいらが解読します。
>>137のオセロは遊び方がわからないので断念しました。

175:名前は開発中のものです。
04/08/04 19:40 2FqsG8xs
俺そんな人に見せるほどのものは作ってないなぁ。ごめん。
って別に俺に言ってるのかは知らんけど。

176:172
04/08/04 20:05 k/+0Z3FN
いやぁもう誰でもおk

177:名前は開発中のものです。
04/08/05 01:04 Ww4148ra
>>174
>>137のオセロソース、斜め読みしかしてないのでアレだけど
横1桁縦1桁の数字(46とか)で打つ場所を入れるんジャネーノ?

178:172
04/08/05 01:21 yhEwSVU3
>>177
4[enter]
6[enter]
で一手やね。
一応解析してみますかな。
Now Analyzing...

179:172
04/08/05 21:43 muG+oZLA
>>137のオセロのソースを整形しました。
URLリンク(do.sakura.ne.jp)

解析は非常に難航してマヂで丸二日かかりました。
それだけにとても勉強になりました。

簡単なポインタの利用例や巧妙な配列の使い方など
参考になると思うので
C言語勉強中の人は一読オススメしておきます。

ちょっと難しいソースだと思うのでコメント大量につけました。
うざい人は消して読んでね。

評価・探索アルゴリズムは読んでみた人だけのひみつ。

180:172
04/08/05 21:53 muG+oZLA
ささ、次の7行プログラムをどなたかもってきてください。
当方CかJavaかJavaScriptしか読めまてん。
よろちくおながいします。

181:名前は開発中のものです。
04/08/06 14:59 1oB+oDD2
誰も貼り付けてくれないので
自分で探してたらこんなのみつけました。

7行スレその1
スレリンク(tech板)
7行スレその2
スレリンク(tech板)

盛り上がっているのは俺だけなのか。。
過疎ってさみしい。

182:名前は開発中のものです。
05/06/12 11:06:16 WhyZAEvM


183:名前は開発中のものです。
05/11/18 21:28:32 aihTlFd4
キャベツage

184:名前は開発中のものです。
06/01/19 22:48:13 ggSypXg/
hosu

185:名前は開発中のものです。
06/09/22 08:30:34 seYHxo/2
    ハ,,ハ  
    ( ゚∀゚) おいらをどこかのスレに送って!
  ~(ouub  お別れの時にはお土産を持たせてね!
現在の所持品:たばこ他48品圧縮.zip・どようび・ドエット
糞スレ・rigel・ギコペ・Jane・ニンバス2000

186:アナルに宣戦布告 ◆3vv40OycRw
07/11/24 20:01:19 w/0MHia8
以下,このスレは私がもらいます.

187:アナルに宣戦布告 ◆3vv40OycRw
07/12/01 01:35:19 3UvlWnEW
作成開始

188:アナルに宣戦布告 ◆3vv40OycRw
07/12/09 23:24:48 c4JBq/jx
保守

189:アナルに宣戦布告 ◆3vv40OycRw
07/12/18 22:40:24 8S4bPrMv
保守

190:アナルに宣戦布告 ◆3vv40OycRw
07/12/26 19:57:32 LLHH0wdN
保守するよ

191:名前は開発中のものです。
07/12/30 15:21:17 C1d66INg
ミ,,゚Д゚彡 < スレ落ちそうやで

192:名前は開発中のものです。
07/12/30 15:53:16 zzg7G+NL
さらしあげ

193:アナルに宣戦布告 ◆3vv40OycRw
08/01/04 23:34:15 0nXTXUOb
新年あけましておめでとうご保守

194:アナルに宣戦布告 ◆3vv40OycRw
08/01/11 22:44:14 dkwNUUFL
保守,それはロマン

195:アナルに宣戦布告 ◆3vv40OycRw
08/01/19 22:27:33 9y0chWmO
保守から始まる恋

196:アナルに宣戦布告 ◆3vv40OycRw
08/01/30 00:18:13 ZFo8EP1h
保守の波動に目覚めたリュウ

197:アナルに宣戦布告 ◆3vv40OycRw
08/02/18 05:45:17 CBB5bNWD
もう保守以外愛せない

198:アナルに宣戦布告 ◆3vv40OycRw
08/03/05 11:11:53 bOacHgHM
きれいな保守してるだろ?
死んでるんだぜ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch