七行プログラミング part3

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
7行×79文字なら言語は問いません。
過去作品は、多分>>2-20を辺り。

■前スレ
http://pc3.2ch.net/test/read.cgi/tech/1018840143/
どんどんレベルが落ちる厨房スレ万歳
ネタスレ?
>>2
自分の低レベルな作品を煽られた人ですか?
このスレの先行きが>>2で暗示されました
>>5-8
なぜpart1の作品をはる?!?!
13前スレの950:02/09/28 01:29
あれ?まずかった?>>11
Part1はよかった…
15前スレの950:02/09/28 01:29
Part2の作品は?
17前スレの950:02/09/28 01:30
これからです>>16
どこからpart2なんですか?
あ、まだpart1だけだったのか。失礼
20前スレの950:02/09/28 01:31
リンク変更しなきゃならんよね?(↑みたいに)
どうせいつか倉庫に落ちるから、面倒なら変更しなくてもいいんじゃない?
22前スレの950:02/09/28 01:32
ああ、20過ぎちゃった(うぇーん
テンプレを用意してから立てろ(ワラ
24前スレの950:02/09/28 01:33
>>21んじゃー、貼るのやめときます。
誰か気が向いたらやっておいてね。
25前スレの950:02/09/28 01:39
とりあえずこれで勘弁してつかーさい。

前スレの作品一覧
http://pc3.2ch.net/test/read.cgi/tech/1018840143/900-906n
追加作品
Prologインタープリタ http://pc3.2ch.net/test/read.cgi/tech/1018840143/914

前スレの残りの作品はどうすべきか(rengecorderとか
http://pc3.2ch.net/test/read.cgi/tech/1018840143/907-
26デフォルトの名無しさん:02/09/28 01:39
七行プログラミング part2 作品集
http://pc3.2ch.net/test/read.cgi/tech/1018840143/900-906n
>>25-26
ケコーン
28前スレの950:02/09/28 01:40
>>23
ごめんよー
不慣れなもんで(泣
このスレを見て、>>2に同意しました(涙
30デフォルトの名無しさん:02/09/28 02:13
Prologインタプリタ・・・・・・・
すげえ
>>30
自作自演?
32前スレの950:02/09/28 02:16
たしかに>>31こういうツッコミがあると
萎えるね
3330:02/09/28 02:23
ただのProlog好きな工房だが何か?
>>30-33

いいから失せろ
お前らも荒らしてんだよ
haxa?
>>2
荒らし煽りは一切放置
>>2がいいことを言った!

つーか、もう、このスレ終わりだね!
作品一覧には7行達成品だけ載せるんじゃないのか?
Prologは凄いとは思うが、だからといって載せていたら
スレタイ意味無いし、何でもアリになる。
正規表現も凄いと思うしな。

てことで、推薦品

http://pc3.2ch.net/test/read.cgi/tech/1018840143/894-895
ドラクエ
>>39
正規表現ってあったっけ?
>>40
896
ドラクエの直後だからみんな気づかなかったのかも
>作品一覧には7行達成品だけ載せるんじゃないのか?
そんなのどこで決めたんだろう・・・・
7行で限定したら作品の幅が(以下省略
なので、モチベーション維持という意味でも十分凄いと思う作品なら
載せてもいいと思われ。投稿量そんなに多くないんだし。
>>42
説明ないからドラクエの続きかと思った
>>43
いやいや、7行超えの番号を記載するのは、
「これ7行にしてみろやゴラァ!」「してやるぜゴラァ!」
のためかと。
あくまでも最終目的の7行以下を見据えてトライトライトライなのだ!
>>43
Part1の903より。
俺もこれを基本ルールとするべきだと思った。
すごけりゃ良いというのなら、七行プログラミングである意味も無いと思うし。

> 名作候補作品、勝手に選択
> 選定に当たっては、7行達成を厳格なルールとしました
(略)
> >>822>>839>>842>>880
あきてキタ━━━━━(゚∀゚)━━━━━!!!!
氏ねよprolog厨
49デフォルトの名無しさん:02/09/28 15:22
もうだめぽ
とりあえずgrepにまともなリストを出して欲しい。解析めんどくさい。
自分でやれ
7行で
>>50>>51
前スレ896に出てきたgrepは、egrep相当の機能が実に巧妙に組まれている。
grepは通常、正規表現->NFA->DFAの変換というステップが必要だから7行は難しい。
7行にするには純粋grep相当に機能を落とさないとだめだろう。
どちらにしろ、もし896が自分で作ったのだとするなら、とてつもなくすごいことだ。
お題:yacc と lex
54lisper:02/09/28 19:41
お遊びでC言語でLISP作ったんだけど、44行になりますた・・・。
アプしても良いですか?
一応、GC、関数トレース、リスト操作、再帰、高階、内部関数とかできます。
>>54
ドラクエより短いなら許す
56デフォルトの名無しさん:02/09/28 19:51
>>54
どっかにアップして、URL貼り付けてよ
つーか7行になるはずのないものをアップするなよ、ボゲが。
44行がどうやったら7行になるんだよ。
お前自分の書いたのを人に見せたいだけのリアル厨房か?
58lisper:02/09/28 20:04
じゃ、やめときます(w
>>52
rangecorderとかハフマンとか、
解説読んでも分からず、7行ソース見て理解したクチなので、
漏れは挑戦してみるよ!
>>58
そんなこと言わずに上げてくださいよー。
省機能版が7行になるかも知れないじゃないですかー。
>>54
サブセットをまず7行で作ってみたい
>>58
わざわざ書き込むなよ。下らねぇ自己顕示欲だな

>>60
なるわけねぇだろ?
イタイ仕切り厨房のせいで可能性が一つ潰されたな
>>62
なるわけねーだろレベルで言ったらオセロやテトリスの方がよっぽどって感じだったよ
あと圧縮関係のも超無理っぽかったよな
>>64
圧縮は楽勝だっただろ。印象で語るな、お前展開したのか?
オセロとテトリスは確かに凄かったな。
それでもlisp44行は絶対に7行にはならない。ちょっとは頭使え。

いいか、厨の為に説明してやるけれど、短くするのはデータ構造が重要なんだよ。
最初から44行にしか落とせないプログラマーが音頭を取ったら、その時点で不可能。
コードは小手先で短くできるけど、データ構造は作った奴の能力そのままなんだよ。
だからlisperみたいな厨丸出しの奴が最初に出したら絶対に出来ねぇ。
>>62
仕切るなぼけ。
作品を作る奴が一番偉いんだよ。無能は引っ込んでろ。
再帰とかその辺のサポートは実装方法で変わってくるけど、
わざわざトレースとかgcを入れたあたりで7行にするつもりが無いというのが分かり切ってる。
>>65
できない厨は消えろ。
>>65
最初は長くてもかまわんだろ。
圧縮する奴は結局根本から作り直すだけだ。
まぁいいや、なるかも知れないと主張してる馬鹿どもは、
まずPrologを7行に汁
話はそれからだ。
>>66
>>68
おいおい、オマエモナー言わせるなよ…。
俺は今までここで何作か出してるぜ。疑うなら現実的な問題出してみ?作ってやるからよ。

つーかレベル低い奴らが出しゃばってくるから有能な奴がこねぇんだよ
頼むから消えてくれ
ソースをアップしたい輩は必ず70の許可をもらうように。(プ
>>70
何がそれからだよ。
出来ないことを自慢げに語るな。
>>69
根本から作り出すならlisperとかいう厨はいらねぇだろ?
なにが「44行になりますた・・・。アプしても良いですか?」だ。消えろ
75デフォルトの名無しさん:02/09/28 20:28
>>71
まずPrologを7行に汁
糞スレサイコー
ちなみに70は俺(71&74&その他)じゃないが、
大体の参加者はそう考えてんだよ。
>>75
かなり辛そうだ。大体俺はprologしらないからちょいきつい。
>>77
紛らわしい言い方すんなw
なんつーか、こういう流れに反対してるのって
前スレから見る限り、過去参加者なのかも知れないな。
今回も単なるギャラリーが出しゃばってるだけと思われ
アプしてもいいだろ。糞なら流れるだけだし
44行だろうがいいものは賞賛されるだろう。
こんな下らん議論よりも44行のソースの方が遥かに価値があるわな。
>>80=古参気取り
うp→無理→ハイ次
うp→できるかも→みんながんばる

アップすることに反対はしないよ、俺は。
>>81
いいものを観賞して賞賛したいなら新スレ作った方がいいだろ。
お前の頭も結構下らないぞ
>>82みたいなギャラリーは、出すなら下らないやっかみじゃなくてお題を出してくれ
ここは鑑賞して賞賛するスレなのか?
いいものはいい、ダメなものはダメ、そんなの各自の頭で判断すりゃいい。
lisper自身がいらない機能を落としたlispで7行に挑戦する意欲があるなら、上げてもいいだろ。
7行にはハナから興味無いとしたら、スレ違いだし。
厨房にいい負かされてるギャラリーのいるスレッドはここですか?(プ
----------ハイ次----------
>>86
だからお前がそのためのスレ作れよ。「いいプログラムを観賞して賞賛するスレ」とか言って。
ここは7行プログラムスレなのに、
>44行だろうがいいものは賞賛されるだろう。
みたいな下らない書き込みするな。頼むから。
くそうgrepがコンパイル通らぬ。
環境はなんなんだ。
今まで全部が7行に収まってきたか?
10行を超えるものだって7行になっただろうが。
最初から「絶対無理」とかいうあんたが最低だよ。
無理かどうかはやってみて分かるはずだ。
最初から諦めてるようじゃそれがあんたの限界だよ。
1 7行に満たない物、7行にする意志のない物は、これまで通りスレとしては評価対象外(作品リスト非掲載)で進める
2 とにかく、縮めテクニックを極めるスレに方針転換し、次スレからスレタイを変える前提で進める

どうする?
>>90
がいいこと行った。
>>87
お前lisperの自作自演か?
lisperは「ママー僕の書いたプログラム見てー」という気持ちが見え見えなんだよ
7行スレにアップしたいなら、最初から機能を制限して挑戦してるはずだろ?
lisperが本気で7行狙ってたら、いらない機能は最初から落としてるんだよ。

だからあいつはあの書き込みをする時点で厨房発覚なんだよ。首吊ってることを祈る
>>93
2は全然違うだろ。7行という微妙な制約が無かったら、
「僕はこれで縮めたつもりだから見てください」っていう厨房多発が目に見える
絶対に1だ
>>91
コンパイラ選ぶような下らないソースは放置すれば?
>>96
それは分かってるんだけど、今回のlisperの件や>>43みたいなのが出てきて、
スレの趣旨を無視しまくった方向に持っていこうとするやん。
それだったらなんで7行スレでやってるんだと言いたいんだけどね。
そんなことはどうでもいいからお題をくれ
>>98
今までlisperを叩きまくった俺が言うのも何だけど、他人のコードを読む事は
とても勉強になるんだよ。独りでやっても限界はあるけれど、有能な奴とふれあえば
自然と知識・経験が増えていくんだ。7行スレで俺はそれを再認識した。

だから、とにかくソースをアップしてくれという奴らの気持ちは解るが、
このスレでそれをやると、今回のような下らない厨房が大挙して押し寄せて、
スレのレベルをsageまくることは間違いない。7行で偉大な作品を達成する奴と、
44行でどうでもいいプログラムを書く奴が同じ土俵に立ってもメリットは無いんだよ。
だから、このスレは「7行」という制約の元、有能な(一部無能だが)人材が
暇つぶしに才能をアピールする、そういう場であり続けて欲しい。part1はそうだった。

前スレではもう今さらかつての優秀な人が戻ってこないかと思ってたが、
最後の方で円周率、prolog(内容はしらんがソースはたいしたもんだ)なんてものが出てきて
俺はもう少しこのスレに期待することにした。
じゃ、麻雀作ってくれ。役は理想は全部。
>>101
もう少し具体的に頼む。役はともかく、対コンピュータとか、二人うちとか
>>100
スマン、あんたもすれ違いだから、7行にまとめる努力してくれ
>>103
お前みたいな奴がこのスレのレベルを下げてるんだよ・・・気付け、もしくは失せろ
オセロ、囲碁、はさみ将棋、将棋、と出てきたからには次は
最後の砦?麻雀だろーというのが周囲の(俺の)期待♪
当然、対コンピュータかな。対戦ならネット経由まで出来て欲しい気がする。
対コンピュータならゲーセンの2人打ちでもOKでしょ。
>>100
は同意できる点もあるが、保守的だと思うな。
スレなんざ、流れによって変わるものだろ。
昔を懐かしむのは勝手だが押し付けるのはもっと勝手だ。
>>106
でも今回のLisperみたいに、
厨は出来れば来ないで欲しいぞ
今のスレの流れは厨房にopenすぎると思うが

やりたいようにやればいいじゃんか。
100レスを超えても作品が0、という流れなのはさすがにまずいね・・・
>>108
失せろ。はい次
>>109
それは言えるね。
>>110
何様のつもり? お前が仕切るなって。 嫌ならお前が消えればいいじゃん。
この雰囲気でアプするヤツはいないと思われ。
>>112
失せろ。はい次
>>106
だから、流れを変えるというのなら
7行スレに拘らずに、次からスレタイ変えろと。
>>114-115
もうこなくていいよ
>>115
つーか、今から新スレ作ってもいいんじゃない?
何がうざいって、仕切ろうするあんたが一番うざいんだよ。
俺も>>108に同意だ。やりたいよーにやりゃーいい。
荒らしたければ荒らせばいいわな。

くだらん発言は無視すればいいだけのこと。
無視できない俺も厨だが、な。
つーか新スレたてろよ。その新しい流れの。
わざわざスレ違いをお子さんでも。
>>116
自縄自縛。何様ですかぁ?
>>118
ところで、「仕切ろうとするあんた」って誰?
>>2がいいこと言った!
>>121
匿名の2chでは特定できんわ。
しいて言うなら最初にLisperとやらにカエレ!といった奴だな。
新しい流れとか言ってる奴はとりあえず、ソースうpしてみれ。
ほれ。
>>123
lisperは厨だと思うけど?
厨房を排除しようというのは仕切るとは違うんじゃないの?
みんな元気だね
127デフォルトの名無しさん:02/09/28 21:15
自縄自縛??????????????????????????
>>127
こんな下らないスレをageんなよ
じじょうじばく 【自縄自縛】
〔自分のなわで自分をしばる意〕自分の言動が自分を束縛して、自由に振る舞えず苦しむこと。「―に陥る」
もうだめだな、このスレも。
>>128
下らないからageるんだろ?
>>125
微妙に会話になってないよ
>>125
そもそも厨房という断定が高圧的なんだよ。
>一応、GC、関数トレース、リスト操作、再帰、高階、内部関数とかできます。
少なくともプログラミングを習って1ヶ月程度の発言とは思えないしな。
正直、長さはともかくアプして欲しかったぞ。俺は。
>>118
好きなようにやればいいってのは嘘だろ〜
スレ違いはダメだと思うぞ。JavaスレでHSPの質問とか(w
いっそ、このまま荒らして終わるか。
>>125
つーかあんたが「最初にLisperとやらにカエレ!といった奴」ですか?
わかりやすい様にコテハンにでもなってくれ
>>133
ならば自分でスレ立てれば?って何度も言われているけれど。
このスレは「七行プログラミング」だったと思ったけど?
技術があるから厨房ではないわけではないと思う。>>95がいいこと言ってる
議論するならID出せよ
すみません、初心者なんですけど、int a=3ってどういう意味なんですか?
変数に代入するときは全部こうするのかと思ったんですが、2回目以降に
エラーが出てしまって困っています。助けてください。
このまま200まで行くに10万袋
141デフォルトの名無しさん:02/09/28 21:23
はやくUmlToJavaつくれや
スレ立てたら立てたで糞スレ立てるなとか単発スレ反対とか言うくせに。
スレ違い?>139
ついにプログラム技術板も強制IDか。情けないな
>138
この板はID出ないから他の板に移動が手っ取り早いよ
>>142
んなもん最初だけ。ソースさえ見せれば良スレになる。早く立てれ。
>>142
「自信作ソースをアップして、みんなでさらに改良するスレ」とかどう?
ニュース議論板
http://corn.2ch.net/news2/
微妙に板違いか。
>>147
そのタイトルだと、視認性落としてまで短くする意味が無くなるね。
1画面プログラムを公開してみんなで叩きまくるスレ
>>150
1画面て?縦横どれぐらい?80x25?
2chなら「省略されました」が出ないぐらいかな。
152暇人:02/09/28 21:31
1  ちょっと測らせてね。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
153暇人:02/09/28 21:31
この板は16行みたいね。
http://game.2ch.net/test/read.cgi/gamedev/1005038280/l50
新スレ立てたがってるひとはここをパクれ。
つーか。わざわざ、行数制限する必要ない。できるだけ短い
プログラムってい方向じゃないんだから。いわば、アレだ。
長編AAみたいな。
part1からの古参です。なんか凄い荒れてますね…残念です。

7行スレはやっぱり7行でやって欲しいと思いますので、新スレには大賛成です。
>>150さんみたく、「1画面プログラミング」とかにしたらいいんじゃないでしょうか?79×24?
もしくは、「read.cgiが悲鳴をあげるまで」とかも面白そうかな(w
01234567890123456789012345678901234567890123456789012345678901234567890123456789
11234567890123456789012345678901234567890123456789012345678901234567890123456789
21234567890123456789012345678901234567890123456789012345678901234567890123456789
31234567890123456789012345678901234567890123456789012345678901234567890123456789
41234567890123456789012345678901234567890123456789012345678901234567890123456789
51234567890123456789012345678901234567890123456789012345678901234567890123456789
61234567890123456789012345678901234567890123456789012345678901234567890123456789
71234567890123456789012345678901234567890123456789012345678901234567890123456789
81234567890123456789012345678901234567890123456789012345678901234567890123456789
91234567890123456789012345678901234567890123456789012345678901234567890123456789
a1234567890123456789012345678901234567890123456789012345678901234567890123456789
b1234567890123456789012345678901234567890123456789012345678901234567890123456789
c1234567890123456789012345678901234567890123456789012345678901234567890123456789
d1234567890123456789012345678901234567890123456789012345678901234567890123456789
e1234567890123456789012345678901234567890123456789012345678901234567890123456789
f1234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
11234567890123456789012345678901234567890123456789012345678901234567890123456789
21234567890123456789012345678901234567890123456789012345678901234567890123456789
31234567890123456789012345678901234567890123456789012345678901234567890123456789
41234567890123456789012345678901234567890123456789012345678901234567890123456789
51234567890123456789012345678901234567890123456789012345678901234567890123456789
行数制限すればまた今回と似たようなことでもめる事は
目に見えてるでしょ。
80×23行が最高のようです。
行数より質で住み分けたがってんじゃないのか?
・目標7行。
・馴れ合い歓迎。
・ストイックに究めたい人は本家7行スレへ。
みたいな感じで。
3行で2次方程式の解、とかやられても興ざめだしね。
161暇人:02/09/28 21:38
>>158
1レスに収まる文字数ってことですか?
154見たけど、ここの過去スレみたいにお互いに改良とかは無いみたいだね。
単に「ソースを上げるスレ」でいいって。
>>159
それが出来ると最高だけれど、重複スレ立てるな!って言われそう
>>161
そ。17行からは省略されるけど。
結局レイトレは可能?
おい、そこのお前! どうか私のソースを見て下さい
http://pc3.2ch.net/test/read.cgi/tech/1012694261/l50
>>164
じゃあ、マ板いけば?
>>168
なんでマ?
詭弁の特徴のガイドライン
http://ton.2ch.net/test/read.cgi/gline/1028811653/

>>70はよく読んで勉強してきてよ
ソースをあげるスレがあるなら、1画面プログラミングあたりが無難だね。
1画面の定義:
↓どうぞ
なんのことはない。結局のところコードを出さずにどうのこうの言ってる連中総てが厨房。
いっかいにかきこめるだけの量
>>173
メール欄を読んでしまったオレモナー。
わかったから早く立てろ。
やっぱ、Telnetで接続したときに全部見えることじゃねーか?
>>170そんなに悔しかったの?
C言語の文字列出力で、短くなる良い方法ありませんか?
printf使いたくないんで。(putsは改行打たれちゃうので却下)
>>173
詭弁の特徴ガイドライン(>>170)を読んでるところだから笑えた。

>>172
1行80文字(79文字+改行)というのは、昔のコンソールから来てるんじゃないですか?
とすると、1画面は24列が正しいかと思います
列?
>>179
データの構造をいじって何とかすれば、大抵printf1個で短く出来るみたいだよ
過去のプログラムを参考にしてみて下さい。
>>181
行だね。スマソ
184179:02/09/28 21:53
>>182
ありがとうございます。

1.while(*s)putchar(*s++);
2.for(;*s;)putchar(*s++);
3.p(s){printf(s)}
沢山使う場合、やっぱ3番みたいなのを定義するのが簡単でしょうか。
すれ違い。質問スレ行け。
186179:02/09/28 21:56
スレ違いでした。
187デフォルトの名無しさん:02/09/28 22:01
新スレまだ?
待ってるぐらいならお前が立てろ>>187
>>185
短くするためのテクニックはスレ違いじゃないよぉ
(というか、話の流れを変えようとしてくれた179氏の意志があれば汲みたい)

そうではなくて、例えばオセロは、配列データの中身が
0:空白 3:○ 6:● 9:改行
みたいな感じで、出力するときに
printf(" \0○\0●\0\n\0"+data[n])
とやっていた。
工夫次第で、printfを1カ所しか書かなくても大丈夫だよ
190デフォルトの名無しさん:02/09/28 22:04
とりあえず、新スレを立てるって方向でいいわけね。
で、lisperのような人は排除していっても問題ないと。
正直、lisperがなんで叩かれてたのかわからんなあ。
仕切り厨房とソースくれ厨房がただ騒いでただけの様な気も。
ルール追加
・コード以外でコミュニケーションするのを禁止
>>191
「縮める気はないんだけど、僕のソース見て」
という態度だと思うよ。
>>192
殺伐としたスレになりそうな予感
>>194
main(){printf("クソコードあげんな(゚ Д゚)ゴルァルァルァ\n");}
こんな感じのクソコードが(以下略
196デフォルトの名無しさん:02/09/28 22:16
ここで馴れ合うのはよせ。早く移動しろ。
そうやって決めつけるところが厨房だっつーの。>>193
>>196
何様ですか?
つーかスレ立ててくださいよ。
ここは煽りと議論だけで1000を目指すスレとなりました。
200200:02/09/28 22:19
感動の200
201唐突に:02/09/28 22:20
↓ぴちょん君登場
if (このスレ==糞スレ) goto 削除依頼;
203pythonクソ:02/09/28 22:22
( ´_ゝ`)
>>197
移動してネ☆
MSに連絡しろ
洗面器持って来い
207デフォルトの名無しさん:02/09/28 22:25
新スレもたてずに馴れ合いで荒らして終わりかよ。最悪だな。

   終  冬
if(this.sled == Sled.KUSO_SLED) this.delete();
荒れてるね。しばらく放置だなこりゃ。じゃ。またね。
211デフォルトの名無しさん:02/09/28 22:26
糸冬マ
それじゃ>>2は偉大だ、という事で


−−−−−−終冬−−−−−−
>>207

     お ま え が な ん と か し ろ
↓↓ 次から何事もなかったかのように再開 ↓↓
不平と不満を言うよりもすすんで明かりを点けましょう。
>>209
s/sled/thread/g
このスレは無事終冬しました(以下略
>>2が前スレからレベルの低下を煽って、自ら墓穴を掘っていると思うが。
>>215
放火魔?
220デフォルトの名無しさん:02/09/28 22:28
>>213
なんで、保守派がなんとかしなきゃいけないんだよ。つーかタイトルも
決まってないしね。テンプレ作ってくれたらスレぐらい作るよ。
このスレに溜まっている厨房に新スレなんて作れません
保守派って・・・自民党ですか。
そして作品は出なくなった。
新スレタイトル。
「釣りバカ日誌パート1」
>>224
それでいいんなら立てるよ?
↓以下、賛同者5名以上で立てる。
賛成
>>224に家族分5票
賛成した奴らはそちらへ移動しろ
賛成してみるか。
>>225
賛成。たてれ。
231225:02/09/28 22:38
>このホストでは、しばらくスレッドが立てられません。
>またの機会にどうぞ。。。

残念だったなおまいら。
>>225
くれぐれもマ板に立てろよ
じゃぁおれが立てる
どんな糞スレたてたんだ?リンクキボン。
235225:02/09/28 22:40
>>232
そか、マ板でも試してみるよ。
「釣りバカ日誌パート1」
http://pc3.2ch.net/test/read.cgi/tech/1033220509/

立てた
237225:02/09/28 22:42
立てた。

釣りバカ日誌パート1
http://pc.2ch.net/test/read.cgi/prog/1033220523/
238225:02/09/28 22:42
うわ。

もう知らん。
分岐元はせめて236にしとけばよかったのに。
もう、アホかと、馬鹿かと(略
糞スレ荒らし養成所
おい、ふざけんな。
>>242
何様ですか?
見事なクソスレに成長したね!
よかったね!
馬鹿だな  >>243
今までの罵り合いの結果がこれか・・・。
ある意味ふさわしいとも言えるな。
>>243
お前はアホだ。
パラダイムシフトだね
結局、ソースアップする奴はいないのか...。44行でもいいからアップさせりゃいいと思うよ。
で、誰が見ても 7行になりそうに無かったら、叩きゃいいんじゃないの ?
プログラマだったら、ソースで語ろうよ。
なんかソース上がってますが
http://pc3.2ch.net/test/read.cgi/tech/1033220509/3
釣り馬鹿日誌スレにアップする奴がいるのかと小一時間(略
ム板、マ板両方に立てやがって。
>>250
プログラマだったら概要で見積もれるようになれよ
今さら無駄だね。
どうでもいいけど>>237の2で激しくワラタよ
>>254
自分の見積もりを過信するなよ
2乗に反比例してレベルが落ちていくな
じゃあ、めでたく新スレ立ったことだし、7行ソースアプせいや
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
このスレ無かった事にして、新しいスレ立てましょうか?
無駄無駄無駄ぁ!
荒らしさん楽しそう♪
>>262
とりあえず荒氏が去るまで寝かせておけ
平日になればおさまるだろ
267Part1の853:02/09/28 23:13
何処に出せばいいやら
ますます分からんようになった。(´・ω・`)
>>267
7行以下ならここ、
それ以上だったらこっち
http://pc3.2ch.net/test/read.cgi/tech/1033220509/
マ板のは微妙に意味が違ってきてる
Part1がまだ生きてるからそこにアプしてわ?
仕切り厨うざい。
>>269
正直、それが安全だね。
2、3日出さずに、貯めとくってのが1番いい。
273Part1の853:02/09/28 23:28
やりたいのは「7行」なんだけど、
俺はPerlしか書けない低レベルな厨だし、
遊び相手がいないと面白くないから、
こういう暖簾分けをした以上、こっちに顔出すのは憚られるのね。

…消えるのが一番いいかな。(w
ここには7行厳守を仕切っている奴がいるからな。
アプすつには彼の許可が必要。
みんなひれ伏すように。
>>273
別にperlで7行じゃ駄目なのものなんだろうか?

ワンライナー以上ショート以下、でも機能はそれ以上ってことで
7行なんだと思ってたんだけど。

短くするってのは無駄を徹底的に省くって意味じゃなかったのかな?
つーか、本気で縮めるならPerlみたいに暗黙の変数があったり
evalがあったりする方がテクニックが広がって面白いのではなかろうか。

あと、言語を選べばワンライナーになるものを、わざわざCとかJavaで
やって7行問題に仕立て上げるのもつまらんと思うし。grepとか。
>>276
まあ処理系依存がなくて設計を工夫して極限まで短いなら面白いと思う。
ただそれを1バイト短くすることはどうでもいいというか、そんなことする位なら
一番短くなる言語で書けばいいじゃんって感じもするね。
278デフォルトの名無しさん:02/09/29 00:20
270以上スレが伸びてるのに、漏れが最初?
C#で適当に書いてみた画像ビューア
using System.Drawing;using System.Drawing.Imaging;using System.Windows.Forms;
using System;class B:Form{Image i=null;public static void Main(){Application.
Run(new B());}public B(){Menu=new MainMenu(new MenuItem[]{new MenuItem("&File"
,new MenuItem[]{new MenuItem("&Open...",new EventHandler(fo))})});}protected
override void OnPaint(PaintEventArgs e){if(i!=null)e.Graphics.DrawImage(i,0,0
);}void fo(object o,EventArgs e){OpenFileDialog d = new OpenFileDialog();if(d.
ShowDialog()==DialogResult.OK){i=Image.FromFile(d.FileName);Invalidate();}}}
>>278
278が流れを変えた!? エライ!!
>>278 やっと神キターー。乙。
でも、C#分からないっす。スマソ。
>>278
[STAThread]が抜けてるのでd.ShowDialog()が失敗する・・・
282278:02/09/29 00:42
>>281
あれ、漏れのところでは別に問題ないけどなぁ
仕切り厨うざいがうざいんだけど。
別居してくれない?
>>283
具体的にどのレス?
1人粘着してるの居てが非常にウザイ。
286283:02/09/29 00:47
>>285
あなたも含めてべとべとです。
7行スレで7行以外のネタを出して居直る神経がわからんよ、ホント。
288281:02/09/29 00:50
>>282
うーん、ウチの環境だとd.ShowDialog()呼んだところで固まって帰ってこなくなります。

http://pc.2ch.net/tech/kako/1016/10165/1016597767.html のレス25
>COMの機能を使う場合は、STAスレッドで動作することを明記しなければならない
>Beta2のバグで、この属性がついていないフォームでも(一見)正しく動作してしまっていた

もしかしてβ使ってます?
289284:02/09/29 00:54
おれかよ。
いや、VS.NET入れてあるし、フレームワークはV1.03705。
OpenFileDialogはコモンダイアログコントロールだから、
COMじゃないと思うけど・・・
291278:02/09/29 01:06
290=278です。
GDI+ってCOMかなぁ?
usingが抜けてるとか…じゃないよね。C#しらないのでスマソ
293らいふげーむ:02/09/29 01:09
初めて作ってみたけど、7行ってむずかしい。
9行になってしまいまつた。

#include <windows.h>
int mx=200,my=200;typedef struct{char f[40000];}F;static F n,t;int WINAPI
WinMain(HINSTANCE q,HINSTANCE w,PSTR e,int r){HDC a=CreateDC("DISPLAY",0,0,0);
long i,x,y,p;int c=0,s;for(i=0;i<mx*my;i++) n.f[i]=rand()%2;while(c<100){for(
y=0;y<my;y++){for(x=0;x<mx;x++){s=0;for(i=0;i<9;i++)if (i!=4 && n.f[((y+(i/3-1
)+my)%my)*mx+((x+(i%3-1)+mx)%mx)]==1)s++;t.f[x+y*mx]=s;}}for(y=0;y<my;y++){for
(x=0;x<mx;x++){p=x+y*my;if(t.f[p]==3)n.f[p]=1;else if(t.f[p]==2);else n.f[p]=
0;if (n.f[p])SetPixel(a,x,y,RGB(255,0,0));else SetPixel(a,x,y,RGB(0,0,0));}}
c++;}DeleteDC(a);}
>>278
つーか自分の環境でちゃんと動いてるの?
295281:02/09/29 01:11
>>290
うちも同バージョン。[STAThread]入れれば動いたんで、
コモンダイアログコントロールがCOMをラップしてるのかもとオモタ。
ildasmで実装がどうなってるのかぼちぼち調べてみるナリ。
>>278 W2K+VS.NETのコマンドラインからcscでコンパイルしたけどちゃんと動いたよ。
297281:02/09/29 01:17
ホントだ。cscからコンパイルで動作確認。吊ってくる。
すまん>>278
>>297
普通になんで動かなかったのか知りたい(w
299100:02/09/29 01:23
>>293
後は任せとけ。これなら余裕で7行にしてやれる
300278:02/09/29 01:32
厨な質問で悪いんだが、
C#の行連結子みたいなの誰か知らない?
[STAthread]を入れようと思うのだが、微妙に足りなくて・・・
301100:02/09/29 01:34
>>278
オーバーしたバージョンを出したら、誰かが縮めると思うぞ
302296:02/09/29 01:34
>>297
VS.NETからコンパイルしていたのかしら?。だとしたら
なにか怪しいコンパイルオプションは付いていない?。
>>298
http://pc3.2ch.net/test/read.cgi/tech/1024746501/835
に再現手順を書いてみました。
>>299
散々偉そうなセリフを吐いたんだから実力を見せつけろよ
305278:02/09/29 01:48
[STAThread]バージョンできました。
行をつなげられたらFileも救えたんだが・・・
using System.Drawing;using System.Drawing.Imaging;using System.Windows.Forms;
using System;class B:Form{[STAThread]static void Main(){Application.Run(new B(
));}public B(){Menu=new MainMenu(new MenuItem[]{new MenuItem("&F",new MenuItem
[]{new MenuItem("&Open...",new EventHandler(c))})});}protected override void
OnPaint (PaintEventArgs e){if(i!=null)e.Graphics.DrawImage(i,0,0);}Image i=
null;void c (object o,EventArgs e){OpenFileDialog d=new OpenFileDialog();if(d.
ShowDialog()==DialogResult.OK){i=Image.FromFile(d.FileName);Invalidate();}}}
306らいふげーむ:02/09/29 01:56
変数名とか変えて8行に。自分ではこれが限界かも。

#include <windows.h>
int X=200,Y=200;typedef struct{char f[40000];}F;static F n,t;int WINAPI
WinMain(HINSTANCE q,HINSTANCE w,PSTR e,int r){HDC a=CreateDC("DISPLAY",0,0,0);
long i,x,y,p,c=0,s;for(i=0;i<X*Y;i++) n.f[i]=rand()%2;while(c<100){for(y=0;y<Y
;y++){for(x=0;x<X;x++){s=0;for(i=0;i<9;i++)if (i!=4&&n.f[((y+(i/3-1)+Y)%Y)*X+(
(x+(i%3-1)+X)%X)]==1)s++;t.f[x+y*X]=s;}}for(y=0;y<Y;y++){for(x=0;x<X;x++){p=x+
y*Y;if(t.f[p]==3)n.f[p]=1;else if(t.f[p]==2);else n.f[p]=0;if (n.f[p])SetPixel
(a,x,y,RGB(255,0,0));else SetPixel(a,x,y,RGB(0,0,0));}}c++;}DeleteDC(a);}
307278:02/09/29 02:01
>>306
パート1の砂嵐やパート2の時計を参考に、
WinMainの引数を減らすと良いと思われ
>>305
3行目の
>public B()

B()
に可能。これでFileも救済できると思われ。
309278:02/09/29 02:04
>>308
ホントだ。
こんなところを見逃してたなんて・・・Thx!
310278:02/09/29 02:06
>>306
RGBはCOLORREFにするためのマクロだけど、
COLORREFはDWORDだから、即値にするとさらに減る
>>293 7行にしてみすた。
#include <windows.h>
int i,x,y,s,X=200,Y,c=0;struct{int f[40000];}n,t;WINAPI WinMain(HINSTANCE q,
HINSTANCE w,PSTR e,int p){HDC a=CreateDC("DISPLAY",0,0,0);Y=X;for(i=X*Y;i--;)n
.f[i]=rand()%2;c=0;while(c++<99){for(y=Y;y--;)for(x=X;x--;)for(i=s=0;i<9;t.f[x
+y*X]=s,i++)if(i!=4&&n.f[((y+i/3-1+Y)%Y)*X+((x+i%3-1+X)%X)]==1)s++;for(y=Y;y--
;)for(x=X;x--;){p=x+y*Y;s=t.f[p];if(s-3){if(s-2)n.f[p]=0;}else n.f[p]=1;
SetPixel(a,x,y,255*!!n.f[p]);}}DeleteDC(a);}
>>311
甘いな。

>>304
どーよ?とはいってもほとんど先人達の技のパクリだけどな。

#include <windows.h>
#include <stdlib.h>
int WINAPI WinMain(HINSTANCE q,HINSTANCE w,PSTR e,int r){const int a=200,b=200
;HDC d=CreateDC("DISPLAY",0,0,0);int n[a*b],t[a*b],y,p;for(r=p=0;p<a*b;n[p++]=
rand()%2);for(;r<200;r++){for(y=0;y<a*b;y++)if(r%2)(t[y]==3)?n[y]=1:(t[y]==2)?
0:(n[y]=0),SetPixel(d,y%a,y/a,RGB(255,0,0)*n[y]);else for(t[y]=p=0;p<9;p++)t[y
]+=(p-4)?n[y+(p%3-1)*a+p/3-1]:0;}DeleteDC(d);InvalidateRect(0,0,0);return 0;}

描画領域は自由に変えれるし(a,b)、後かたづけはやってるし(InvalidateRect)、
intとか一切省略してないし、#includeは全てつけているし、returnもしている

文句つける場所あるか?
313278:02/09/29 02:18
>>312
窓の中でおながいします・・・

>>308
これで最後にして寝ます
using System.Drawing;using System.Drawing.Imaging;using System.Windows.Forms;
using System;class B:Form{[STAThread]static void Main(){Application.Run(new B(
));}B(){Menu=new MainMenu(new MenuItem[]{new MenuItem("&File",new MenuItem[]{
new MenuItem("&Open...",new EventHandler(c))})});}protected override void
OnPaint(PaintEventArgs e){if(i!=null)e.Graphics.DrawImage(i,0,0);}Image i=null
;void c(object o,EventArgs e){OpenFileDialog d=new OpenFileDialog();if(d.
ShowDialog()==DialogResult.OK){i=Image.FromFile(d.FileName);Invalidate();}}}
>甘いな

なんだかなぁ…
>>313
・・・その挑戦はきつい・・・
&File復活おめ
>>314
お前らみたいに凄いのを凄いと素直に言えない奴らが厨房なんだよ。
>>312==>>100
つくづく性格悪いな・・・
>>316

>>137
>技術があるから厨房ではないわけではないと思う
>>317
なんで匿名掲示板で礼儀正しくしてなきゃいけねぇんだよ。
つーかプログラム叩いてくれよ。

>>318
スマソ・・
元のプログラムはCなのにCPPにするわけ?
>>320
Cだと簡単すぎた
>>316
だからといって、その前に出した311を蔑む必要があるか?
>322
被害妄想。甘いものは甘い。自分よりレベルの低いコードだから指摘しましたが何か?
とはいえ、蔑むつもりは毛頭なかったことを補足しておく。
7行化に協力してくれてthx>311
>>312
> 文句つける場所あるか?

だめ、

> for(t[y]=p=0;p<9;p++)
>  t[y]+=(p-4)?n[y+(p%3-1)*a+p/3-1]:0;

y = 0; p = 0 の時に n[] の範囲外をアクセスするぞ。元のプログラムが、

n.f[((y+i/3-1+Y)%Y)*X+((x+i%3-1+X)%X)]

とまだるっこしいことをやってる意味を考えろ。
>>325
その通りだ。スマソ
窓にしてみた。part1のソースコードを引っ張ってきたがいまいち意味がわからん。

#include <windows.h>
int WINAPI WinMain(HINSTANCE i,HINSTANCE,PSTR,int){int a=120,n[a*102],t[a*102],
y,p,c,m[8],r;WNDCLASS w={67,DefWindowProc,0,0,i,0,0,0,0,"a"};RegisterClass(&w);
HWND g;HDC d=GetDC(g=CreateWindow("a","life game",513<<19,1<<31,1<<31,a,100,0,0
,i,0));for(c=p=0;p<a*102;n[p++]=((y=y*9+5)>>12)%2);while(GetMessage((MSG*)m,g,0
,0)!=-1){if(m[1]==15){for(c++,y=a;y<a*101;y++)if(c%2)for(t[y]=p=0;p<9;p++)t[y]
+=(p-4)?n[y+(p%3-1)*a+p/3-1]:0;else(t[y]==3)?n[y]=1:(t[y]==2)?0:(n[y]=0),SetPi\
xel(d,y%a,y/a-1,255*n[y]);}DispatchMessage((MSG*)m);InvalidateRect(g,0,0);}ret\
urn 0;}

境界条件が嘘だけどまあいいだろう。
今9行。Cで書いたら7行はすぐだろうな。
WinMainの引数型はWINAPIだから省略しても問題ない。
>>311のコードから。
#include <windows.h>
int i,x,y,s,X=200,Y,c=0;struct{int f[40000];}n,t;WINAPI WinMain(q,w,e,p){HDC a
=CreateDC("DISPLAY",0,0,0);Y=X;for(i=X*Y;i--;)n.f[i]=rand()%2;c=0;while(c++<99
){for(y=Y;y--;)for(x=X;x--;)for(i=s=0;i<9;t.f[x+y*X]=s,i++)if(i!=4&&n.f[((y+i/
3-1+Y)%Y)*X+((x+i%3-1+X)%X)]==1)s++;for(y=Y;y--;)for(x=X;x--;){p=x+y*Y;s=t.f[p
];if(s-3){if(s-2)n.f[p]=0;}else n.f[p]=1;SetPixel(a,x,y,255*!!n.f[p]);}}
DeleteDC(a);}
もう100こなくていいよ。気分悪い。
>>329
何様ですか?(笑
331328:02/09/29 03:50
最後のif文を?へ。
これで6行。
>>328から。
#include <windows.h>
int i,x,y,s,a,X=200,Y,c=0;struct{int f[40000];}n,t;WINAPI WinMain(q,w,e,p){Y=X
;a=CreateDC("DISPLAY",0,0,0);for(i=X*Y;i--;)n.f[i]=rand()%2;c=0;while(c++<99){
for(y=Y;y--;)for(x=X;x--;)for(i=s=0;i<9;t.f[x+y*X]=s,i++)if(i!=4&&n.f[((y+i/3-
1+Y)%Y)*X+((x+i%3-1+X)%X)]==1)s++;for(y=Y;y--;)for(x=X;x--;){p=x+y*Y;s=t.f[p];
n.f[p]=(s-3)?(s-2)?0:n.f[p]:1;SetPixel(a,x,y,255*!!n.f[p]);}}DeleteDC(a);}
前スレ>>896のgrepを少し縮めてみた。gccとvcでコンパイルできる。

typedef unsigned char*U,V;V Z[9999],H[999];c,f;U P,Q,r,s,t,u;C(b){*Q++=b;}I(c){
return c&&strchr("*+?",c);}N(U p){return(c=p[1]<<8|p[2])?*p==7?p-c:p+c:0;}S(o,p
)U p;{for(s=Q,Q+=3;s-->p;s[3]=*s);*p=o,p[1]=p[2]=0;}T(U p,U v){for(;N(p);p=N(p)
);p[2]=c=*p==7?p-v:v-p;p[1]=c>>8;}O(U p,U v){*p-6||T(p+3,v);}D(o){r=Q;*Q++=o;*Q
++=0;*Q++=0;return r;}M(U p){U n,q;for(;p;p=n){n=N(p);c=*p;if(!c||c==1&&P!=Q||c
==2&&*P||c==3&&!*P++||c==4&&(!*P||!strchr(p+3,*P++))||c==5&&strchr(p+3,*P++)||c
==8&&p[3]!=*P++)return!c;if(c>9)return M(n);if(c==6){for(q=P;!(f=M(p+3))&&(p=N(
p))&&*p==6;P=q);return f;}}}G(p,F){U r=p?(r=D(10)),T(r,B()),r:B();for(;*P=='|';
F=f,P++,T(r,B()),f=f?F:f);T(r,u=D(p?11:0));for(t=r;t;t=N(t))O(t,u);if(p?*P++-41
:*P)E();return r;}E(){exit(1);}L(){for(D(*P==94?P++,5:4),(*P==93||*P==45)&&C(*P
++);*P&&*P!=93;)if(*P-45)C(*P++);else if(*++P-93&&*P)for(c=P[-2];c<=*P++;P--,C(
c++));else C(45);*P++-93&&E();C(0);}B(){U p,q;for(f=0,p=D(6),q=0;*P&&*P-'|'&&*P
-41;(q&&T(q,u)),q=u)f=0,(c=*P++)==94?D(1):c==36?D(2):c==46?f=1,D(3):c==91?f=1,L
():c==40?r=G(1):I(c)?E():((c-92||*P++||E()),f=1,D(8),C(P[-1])),u=r,I(c=*P)&&(!f
&&c-47&&E(),f=0,c==42?S(6,u),O(u,D(7)),O(u,u),T(u,D(6)),T(u,D(9)):c==43?f=1,T(u
,t=D(6)),T(D(7),u),T(t,D(6)),T(u,D(9)):(S(6,u),T(u,D(6)),T(u,t=D(9)),O(u,t)),I(
*++P)&&E());q||D(9);return p;}main(c,v)char**v;{for(P=v[1],Q=Z,G(0);gets(H);)
for(Q=s=H;P=s,M(Z)?puts(H),0:*s++;);}
>>312から

#include <windows.h>
WinMain(HINSTANCE,HINSTANCE,PSTR,int r){const int a=200,b=a,c=a*b;int n[c*2],*t
=n,y=0,p;HDC d=GetDC(0);for(;t<n+c;*t++=rand()%2);for(r=200;r--;){for(;y<c;y++)
for(t[y]=p=0;p<9;p++)t[y]+=(p-4)?n[y+(p%3-1)*a+p/3-1]:0;for(;y--;)SetPixel(d,y%
a,y/a,255*(n[y]=t[y]^2?t[y]==3:n[y]));}InvalidateRect(0,0,!ReleaseDC(0,d));}

とりあえず、バグも残ってるんでうまく解消する方法を模索中。

windows.hにWinMainのプロトタイプ宣言が入っているので、
呼び出し規約WINAPIは記述しなくてもOK

>SetPixel(d,y%a,y/a,255*(n[y]=t[y]^2?t[y]==3:n[y]));
これが目玉(そうでもないか
>>327
VC++6.0SP5でビルドすると、
LifeGame.cpp(2) : error C2057: 定数式が必要です。
LifeGame.cpp(2) : error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
LifeGame.cpp(2) : error C2133: 'n' : サイズが不明です。
LifeGame.cpp(2) : error C2057: 定数式が必要です。
LifeGame.cpp(2) : error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
LifeGame.cpp(2) : error C2133: 't' : サイズが不明です。
って怒られるけど、何かオプション必要?
>>334
定数式が必要だと思われ。
>n[a*102],
ところでC++ってこんなことできたっけ?(allocaがいらなくなる?)
gccの拡張機能にあったかもしれないけど。
>>312
とりあえず、6行。VC++ 6 + SP5 では動いた。

#include <windows.h>
extern int rand();const int x=200,y=200,m=x*y;int n[m],t[m],i,z=m,c=100,s;int
WINAPI WinMain(HINSTANCE,HINSTANCE,PSTR,int){HDC a=CreateDC("DISPLAY",0,0,0);
for(;z--;)n[z]=rand()%2;for(;c--;){for(z=m;z--;){for(s=i=0;i<9;i++)s+=i!=4&&n[
((z/x+i/3-1+x)%x)*x+(z%x+i%3-1+x)%x];t[z]=s==3?1:s==2?n[z]:0;}for(z=m;z--;)
SetPixel(a,z%x,z/x,(n[z]=t[z])*255);}DeleteDC(a);return!InvalidateRect(0,0,0);}
>>334
拡張子をcppにするとコンパイルできるよ
って、なってるみたいね。わからん。
もう100こなくていいよ。気分悪い。
339デフォルトの名無しさん:02/09/29 06:43
朝。
さわやかな朝。
そして、さわやかな2ちぇんねる。
そしていつものように>>340はtypo
クソスレageんなヴォケ
>>337
> 拡張子をcppにするとコンパイルできるよ
> って、なってるみたいね。わからん。

うちの VC++6 (SP5) だとコンパイル/実行はできる。ただし以下の警告が出る。

test.cpp(2) : warning C4007: 'WinMain' : '__stdcall' でなければなりません。
test.cpp(5) : warning C4508: 'WinMain' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。
リンク中...
ブラウザ データベースを作成中...

test.exe - エラー 0、警告 2
grepのソースコードすげえー
B()のforループがとんでもないね
345生ものゲーム:02/09/29 14:23
#include <windows.h>
int WINAPI WinMain(HINSTANCE i,HINSTANCE,PSTR,int c){int a=200,b=a*a,n[b],t[b],
y,p=b,m[8];WNDCLASS w={67,DefWindowProc,0,0,i,0,0,0,0,"a"};HWND g;RegisterClass
(&w);HDC d=GetDC(g=CreateWindow("a","生",513<<19,0,0,a,a,0,0,i,0));for(;p--;)n[
p]=rand()%2;while(~GetMessage((MSG*)m,g,0,0)){for(c++,y=b;--y;)if(c%2)for(t[y]=
p=0;p<9;p++)t[y]+=p-4&&n[y+(p%3-1)*a+p/3-1];else n[y]=t[y]==3||t[y]==2&&n[y],
SetPixel(d,y%a,y/a,255*n[y]);DispatchMessage((MSG*)m);InvalidateRect(g,0,0);}}
>>345
窓7行達成おめ
100はエラそうな割にたいしたこと無かったな
>>347
あなたもかなり偉そうだぞ。そういう書き込みはまた厨房を召還してしまう。
コードに突っ込みを入れるなり自分で作品を出して言うべし。
ちなみに口が悪いから評価されてないけど、>>312はなかなかの作品だと思う。
>>348
なかなかの作品ならあれからさらに2行も縮まるかボケ
>>349
自分が嫌いだからと言ってソースも読まずに叩くなよ。
そういう事がやりたいなら板違いだからマ板へ行け
348=312=100
作品以前に人間性に問題あるよ
>>351
それ(348=312=100)、どうせ特定できないし、荒れる要因になるので、放置の方向で。
7行スレで遊んでみて思うのは7行というのは結構長い、ということ。
79*7=553文字あると、かなりの範囲まで表現できると思いますた。
もう改行もしないで80x7文字で行こう!
って最近のコンパイラは1行256文字超えても大丈夫?
355Part2の989:02/09/30 00:26
#include<stdio.h>
char s[999],*p=s;k(){while(*p==32)++p;}a(void){int r=0;if(*p=='('){char c=*++p
;++p;k();r=a();if(c==43)r+=a();else if(c==45)r-=a();else if(c==42)r*=a();else
if(c==47)r/=a();else if(c==37)r%=a();else if(c==80)printf("%d\n",r);else if(76
==c){int i,n=r;char*b=p;for(i=0;i<n;++i){p=b;r=a();}}++p;}else do{r=r*10+*(p++
)-'0';}while(*p!=32&&*p!=')');k();return r;}main(){gets(s);a();return 0;}

lisp風電卓、再び6行に縮めることができました。

仕様(俺がlisp知らないので適当)

(演算子 式 式) …計算 + - * / %
(P 式) …式を表示、結果は式の値そのまま
(L 回数 式) …式を回数繰り返す、結果は最後に実行した式の値

条件判断と再帰呼出しができるようにしたいなー。
そうすればLも廃止できるし…後一行の余裕でどうにかならないかしら。
>>355
前置記法と言うです。
>>355
(P (+ 1 2 3))
3
せっかくの前置記法なのに勿体ない。
あと、Lって何に使えるの?
ソースは今から読みまふ。
そのまま寝てしまいそうですがw
>>355
関数作れる様にできるといいね。条件式も。
関数定義:(F 名前 引数 値)
条件式:(? 条件 真 偽)
最低F?=+-があればフィボナッチとか書ける様になると思う。
(F f(n)(?(= n 0)0(?(= n 1)1(+(f(- n 1))(f(- n 2))))))
=>f
(f 20)
=>6765
359278:02/09/30 05:29
使ってないusingを見つけたので、
それを省いて、代わりにスクロールバーを入れてみた。
そして、&Fileは再び階層ごと消えてしまった。
using System;using System.Drawing;using System.Windows.Forms;class B:Form{B(){
Menu=new MainMenu(new MenuItem[]{new MenuItem("&Open...",new EventHandler(c))}
);AutoScroll=1>0;}Image i=null;void c(object o,EventArgs e){OpenFileDialog d=
new OpenFileDialog();if(d.ShowDialog()==DialogResult.OK){i=Image.FromFile(d.
FileName);AutoScrollMinSize=i.Size;Invalidate();}}[STAThread]static void Main(
){Application.Run(new B());}protected override void OnPaint(PaintEventArgs e){
if(i!=null)e.Graphics.DrawImage(i,new Rectangle(AutoScrollPosition,i.Size));}}
>>350
まぁいいや、マジレス。俺も縮めた。
しかし、これを言うと特定されるから言いたくなかった。
以上

んじゃ。
361Part2の989:02/09/30 11:21
#include<stdio.h>
char s[999],*p=s;k(){while(*p==32)++p;}a(void){int r=0;if(*p==40){char c=*++p;
++p;k();r=a();(c==43)?r+=a():(c==45)?r-=a():(c==42)?r*=a():(c==47)?r/=a():(c==
37)?r%=a():(c==61)?r=r==a():(c==62)?r=r>a():(c==60)?r=r<a():(c==80)?printf(
"%d\n",r):(c==63)?r?r=a(),a():(a(),r=a()):0;++p;}else do{r=r*10+*(p++)-48;}
while(*p!=32&&*p!=41);k();return r;}main(){gets(s);a();return 0;}

Lを廃止
= > < 追加
? 追加
ifを?:に書き換えて短縮

で、まだ6行なので、関数定義いけるか…?
362Part2の989:02/09/30 11:31
関数定義…横暴な仕様を考え中。

・関数は1つだけ定義できる
・引数は1つだけ渡せる

(F 式) で定義。式中では引数はXで参照。
(C 式) で呼びだし。式の値が呼びだし先のXに。

で、>>358のフィボナッチを計算できないかな〜と(w
複数行の入力を受け付ける余裕はなさげなので、関数定義は0を返すようにして、↓な感じ

(+ (F (?(= X 0)0(?(= X 1)1(+(C(- X 1))(C(- X 2)))))) (C 20))
>>361の分岐を、==のネストから-にして、ちょっと短くしてみました。
間違ってたらスマソ。
#include<stdio.h>
char s[999],*p=s;k(){while(*p==32)++p;}a(){int r=0;if(*p==40){char c=*++p;++p;
k();r=a();r=c-43?c-45?c-42?c-47?c-37?c-61?c-62?c-60?c-80?c-63?0:r?a(),a():(a()
,r=a()):printf("%d\n",r):r<a():r>a():r==a():r%a():r/a():r*a():r-a():r+a();++p;
}else do r=r*10+*(p++)-48;while(*p-32&&*p-41);k();return r;}main(){gets(s);a()
;return 0;}
364363:02/09/30 11:44
あと、最後のmainのreturn 0;はいらないよね。それで5行までもうちょいかと。
365Part2の989:02/09/30 12:10
>>363
ありがとうございます。

でも増えちゃったんですね〜関数定義追加したら。

#include<stdio.h>
char*f,s[999],*p=s;k(){while(*p==32)++p;}a(int x){int r=0;if(*p==40){char*b,c=
*++p;++p;k();r=a(x);(c==43)?r+=a(x):(c==45)?r-=a(x):(c==42)?r*=a(x):(c==47)?r
/=a(x):(c==37)?r%=a(x):(c==61)?r=r==a(x):(c==62)?r=r>a(x):(c==60)?r=r<a(x):(c
==80)?printf("%d\n",r):(c==63)?r?r=a(x),x=a(x):a(x),r=a(x):(c==70)?(f=p),r=(a(
x),0):(c==67)?(b=p),(p=f),(r=a(r)),(int)(p=b):0;++p;}else if(*p==88){r=x;++p;}
else do{r=r*10+*(p++)-48;}while(*p-32&&*p-41);k();return r;}main(){gets(s);a(0
);return 0;}

(+ (F X (+ X 2)) (P (C 1))) ==> 3 は動作確認しましたが、
フィボナッチが計算できない〜…デバッグしなければ。

関数定義は (F ダミー引数定義 式) となり、結果は0、ダミー引数定義はX固定です。
366363:02/09/30 12:11
Pを省略して、代わりに結果をmainで常に出力させれば5行は達成すると思います。
main(){gets(s);printf("\d\n",a());}
367Part2の989:02/09/30 12:14
ひょっとして?の前の式に()は要らない?…(試す)…おー、本当だ、すげー。
368363:02/09/30 12:17
一応>>363から>>364,>>366を適用したものです。>>365はまだ反映してません。
これで5行
#include<stdio.h>
char s[999],*p=s;k(){while(*p==32)++p;}a(){int r=0;if(*p==40){char c=*++p;++p;
k();r=a();r=c-43?c-45?c-42?c-47?c-37?c-61?c-62?c-60?c-63?0:r?a(),a():(a(),r=a(
)):r<a():r>a():r==a():r%a():r/a():r*a():r-a():r+a();++p;}else do r=r*10+*(p++)
-48;while(*p-32&&*p-41);k();return r;}main(){gets(s);printf("%d\n",a());}
369363:02/09/30 12:20
あ、?の結果が変になりますね。やっぱり無理があったみたい。
r?a(),a():(a(),r=a())の部分をどうにかしないと…
370363:02/09/30 12:36
>>368から>>369の不具合を直したもの。'?'を分離して対処。6行に戻る。
#include<stdio.h>
char s[999],*p=s;k(){while(*p==32)++p;}a(){int r=0;if(*p==40){char c=*++p;++p;
k();r=a();if(c==63)r?r=a(),a():(r=a(a()));else r=c-43?c-45?c-42?c-47?c-37?c-61
?c-62?c-60?0:r<a():r>a():r==a():r%a():r/a():r*a():r-a():r+a();++p;}else do r=r
*10+*(p++)-48;while(*p-32&&*p-41);k();return r;}main(){gets(s);printf("%d\n",a
());}
371Part2の989:02/09/30 13:19
フィボナッチ計算デ(・∀・)キタ―――――――!!

#include<stdio.h>
char*f,s[999],*p=s;k(){while(*p==32)++p;}a(int x){int r=0;if(*p==40){char*b,c=
*++p;++p;k();r=a(x);c==43?r+=a(x):c==45?r-=a(x):c==42?r*=a(x):c==47?r/=a(x):c
==37?r%=a(x):c==61?r=r==a(x):c==62?r=r>a(x):c==60?r=r<a(x):c==80?printf("%d\n"
,r):c==63?((b=f),r?(r=a(x)),(f=0),a(x),(f=b),0:((f=0),a(x),(f=b),r=a(x))):c==
70?((b=p),r=(a(x),0),(f=b),0):c==67?(f?((b=p),(p=f),(r=a(r)),(p=b),0):0):0;++p
;}else if(*p==88){r=x;++p;}else do{r=r*10+*(p++)-48;}while(*p-32&&*p-41&&*p-40
);k();return r;}main(){gets(s);a(0);}

(+ (F X (?(= X 0)0(?(= X 1)1(+(C(- X 1))(C(- X 2)))))) (P(C 20))) ==> 6765

現在8行。%辺りの使わない演算子は消してしまってもいいかな?
372363:02/09/30 13:35
>>371
凄い!とうとうやったね。
で、Pと無駄な括弧省いたら7行になったよ。(Pいるの?)
#include<stdio.h>
char*f,s[999],*p=s;k(){while(*p==32)++p;}a(int x){int r=0;if(*p==40){char*b,c=
*++p;++p;k();r=a(x);c==43?r+=a(x):c==45?r-=a(x):c==42?r*=a(x):c==47?r/=a(x):c
==37?r%=a(x):c==61?r=r==a(x):c==62?r=r>a(x):c==60?r=r<a(x):c==63?(b=f,r?r=a(x)
,f=0,a(x),f=b,0:(f=0,a(x),f=b,r=a(x))):c==70?b=p,r=(a(x),0),f=b,0:c==67?(f?(b=
p,p=f,r=a(r),p=b,0):0):0;++p;}else if(*p==88)r=x,++p;else do{r=r*10+*(p++)-48;
}while(*p-32&&*p-41&&*p-40);k();return r;}main(){gets(s);printf("%d\n",a(0));}

(+ (F X (?(= X 0)0(?(= X 1)1(+(C(- X 1))(C(- X 2)))))) (C 20))
6765
373Part2の989:02/09/30 13:51
>>372
無駄な括弧は、デバッグ時書いていたものを、優先順位的に消してもいいものか迷ってました。
サンクス、大感謝です!

Pは、最終的に7行「lispインタプリタ」を名乗りたかったので(←lisp知らないくせに)、
計算以外の命令文っぽいものを残しときたかっただけです(w
ってことでPの代わりに%を省略。これでも7行。

#include<stdio.h>
char*f,s[999],*p=s;k(){while(*p==32)++p;}a(int x){int r=0;if(*p==40){char*b,c=
*++p;++p;k();r=a(x);c==43?r+=a(x):c==45?r-=a(x):c==42?r*=a(x):c==47?r/=a(x):c
==61?r=r==a(x):c==62?r=r>a(x):c==60?r=r<a(x):c==63?(b=f,r?r=a(x),f=0,a(x),f=b,
0:(f=0,a(x),f=b,r=a(x))):c==70?b=p,r=(a(x),0),f=b,0:c==67?(f?(b=p,p=f,r=a(r),p
=b,0):0):c==80?printf("%d\n",r):0;++p;}else if(*p==88)r=x,++p;else do{r=r*10+*
(p++)-48;}while(*p-32&&*p-41&&*p-40);k();return r;}main(){gets(s);a(0);}
374363:02/09/30 14:13
>>373
それだったら本物のLISPインタプリタと同じ様に、read-eval-print-loop
にすると良いよ。(行入力にループ追加、%,Pを省略しました。終了はCtrl+Z)
#include<stdio.h>
char*f,s[999],*p=s;k(){while(*p==32)++p;}a(int x){int r=0;if(*p==40){char*b,c=
*++p;++p;k();r=a(x);c==43?r+=a(x):c==45?r-=a(x):c==42?r*=a(x):c==47?r/=a(x):c
==61?r=r==a(x):c==62?r=r>a(x):c==60?r=r<a(x):c==63?(b=f,r?r=a(x),f=0,a(x),f=b,
0:(f=0,a(x),f=b,r=a(x))):c==70?b=p,r=(a(x),0),f=b,0:c==67?(f?(b=p,p=f,r=a(r),p
=b,0):0):0;++p;}else if(*p==88)r=x,++p;else do{r=r*10+*(p++)-48;}while(*p-32&&
*p-41&&*p-40);k();return r;}main(){while(gets(s))p=s,printf("%d\n",a(0));}
375デフォルトの名無しさん:02/09/30 19:58
part 2 よりも下がってるのでage
>347
最初の *p=s は main()でやってるので *p でいいのでは?

あと、終わりのほうのdo while()(10進文字列->intですよね?)の条件は
(*p>47&*p<58)でいいと思う。

うー、なんでwhileじゃなくdo whileなのかワカラン。わしがなにか読み落としとるのかー?
まちがえた
>347 <-> >374
a(int x)もa(x)でいい
c==45とかをc-45に変換したらもう少し小さくならない?
38060cm浮き上がるストレート:02/10/01 16:42
スロットです。13行です。
どなたか縮めてください。または縮める方法やこつを教えてください。

long z;char j[]="000102101112202122001020011121021222001122021120",s[][17]={
"\x1b[>5h","回:+ 止:1~3 終:/","  "};int g,a,b,e[28][3],o=9,m[3],n[8],Y[3],c=0;
main(){S(0);H(6,33);S(1);for(;;){g=kbhit()?getch():0;H(20,37);printf("%5d",o);
if(c>4)c=0;for(a=0;a<8;a++){if(c<1){m[a/3]=2;n[a]=0;Y[a/3]=0;for(b=0;b<84;b++)
e[b/3][b%3]=rand()%7;}if(c==1){m[a/3]=0;if(a>6)c=2;}if(c>1&&a<3){b=Y[a];if(m[a
]<1&&g==49+a)m[a]=1;if(m[a]==1&&b%3==0){m[a]=2;c++;}if(m[a]<2)Y[a]=b==83?0:b+1
;}}if(c<1&&g==43){c=1;o--;}if(g==47||o<0)return;if(c>4){b=0;for(a=0;a<43;a+=6)
if(R(a,0,1)==R(a,2,3)&&R(a,0,1)==R(a,4,5)){b++;n[a/6]=1;}o+=b*b*b;}if(c>1){for
(a=0;a<81;a++){H(17-a/9,32+a%9*2);for(b=0;b<47;b+=2)if(n[b/6]==1&&j[b]-48==a/9
/3&&j[b+1]-48==a%9/3)M(5);M(e[L((Y[a%9/3]+a/9)/3)][a%9/3]+41);S(2);M(0);}}for(
z=0;z<2000000;z++);}}L(a){return a-=a>27?28:0;}R(a,b,c){return e[L(j[a+b]-48+Y
[j[a+c]-48]/3)][j[a+c]-48];}M(a){printf("\x1b[%dm",a);}S(a){printf("%s",s[a]);
}H(y,x){printf("\x1b[%d;%dH",y,x);}
1 エスケープシーケンス使うのやめれ
2 printfはまとめろ
3 桁の多い定数は何とかして圧縮汁
4 a==1?1:0はa-1?0:1/a^1?0:1に置き換えられる
最低でもこのスレに出てたソースのテクニックは全部詰め込め。
我流だけじゃ大して面白くもない
>>382
縮めてやれよ
>>383
NTなんでエスケープシーケンスが正常に表示されないんだよ
>>384
文句言ってないで自分でなんとかしろ
>>385
うるせーな、面倒なんだよ
>>386
だったら文句言うなボケ
>>381
お答えありがとうございます。

>1 エスケープシーケンス使うのやめれ
使わなくても作れたのですが、へぼプラグラムをカバーするために
使いました。確かにかなり文字数を消費してしまいます。
もしエスケプに変わる、関数なんかでもっと小さくかけるのなんかが
あったら教えてください。

>2 printfはまとめろ
これはかなり考えていたのですが。
今回はint用、文字列用、色変え用、カーソル移動用に分けて使いました。
種類の違うのを1つにする方法はあるのでしょうか。
または、それはないので、1種類しか使わないプログラムを作るように
したほうがよいのでしょうか。

>3 桁の多い定数は何とかして圧縮汁
48桁×3パターンだったので3進数扱いにしてやったのですが、
処理のほうで意外と文字数が増えてしまったので断念しました。

>4 a==1?1:0はa-1?0:1/a^1?0:1に置き換えられる
確かに。分岐時の省略は、!=0の意味になりますからね。
1文字でも大事にしないといけませんね。
389デフォルトの名無しさん:02/10/01 21:27
lispっぽいのすげえ!!
すでにソース見てもなにやってるかわからん(w
390363:02/10/02 01:52
>>374からの変更です。
>>376,>>378を反映してさらに短くなりました。
数文字余ったので結果出力に=>を追加,%を復活させました。
#include<stdio.h>
char*f,s[999],*p;k(){while(*p==32)++p;}a(x){int r=0;if(*p==40){char*b,c=*++p;
++p;k();r=a(x);c==43?r+=a(x):c==45?r-=a(x):c==42?r*=a(x):c==47?r/=a(x):c==37?r
%=a(x):c==61?r=r==a(x):c==62?r=r>a(x):c==60?r=r<a(x):c==63?(b=f,r?r=a(x),f=0,a
(x),f=b,0:(f=0,a(x),f=b,r=a(x))):c==70?b=p,r=(a(x),0),f=b,0:c==67?(f?(b=p,p=f,
r=a(r),p=b,0):0):0;++p;}else if(*p==88)r=x,++p;else while(*p>47&&*p<58)r=r*10+
*(p++)-48;k();return r;}main(){while(gets(s))p=s,printf("=>%d\n",a(0));}

>>379の、==を-に直すアイデアは、左辺値のエラーが出るので保留です。
該当部分を括弧で括るとエラーは出なくなりますが、逆に増えてしまいました。
前スレ553を参考に7行で動的rangecoder
# 初代スレ745のそれと違いサイズ制限無し
圧縮>exec src dst e
展開>exec src dst

#include<stdio.h>
FILE*G,*P;unsigned U[258]={1,1},C=4,L,W=~0,X=256,N,K,A=2,Z,T;f(l,w){for(L+=W*l;
(W*=w)<=~L*X/X||W<X*X&&(W=65535&-L);L*=w=X)Z?N=N*X+getc(G):putc(L>>24,P);}main(
i,v)char**v;{G=fopen(v[1],"rb");P=fopen(v[2],"wb");for(Z=i<4;C--;Z&&f(0,1))W/=X
;for(W=C;C;Z*--C&&putc(C-1,P)){i=Z?0:getc(G)+2;W/=A++;for(K=C=0;T=U[C],Z?W*(K+T
)<=N-L:i--;C++)K+=T;f(T?K:0,T+!T);T*C||f((W/=X,C=C?C:(N-L)/W+2)-2,1);for(K=++U[
C]/X?A=2,258:1;--K>1;)A+=U[K]/=2;}for(T=4;T--;f(0,1))W/=X;fclose(P);fclose(G);}
>>391
ヒョ準入出力使ったら短くなるかな?
exec e <src >dst
LISPインタプリタ。シンボル名は1文字、ラムダリストは必須パラメータのみ、
GC・クロージャ・リスト操作・リストのプリンタ・エラーチェックいっさいなしと、
かなり機能を絞りましたが全然小さくなりません。お前らもっと縮められませんか?

#include <stdio.h>
typedef int*O,(*F)();d[9<<20];j[768];O e=d,f,g,b,h,i,x,y;k,l,m,n,o;A(p,q){i=e++
;*e++=p;*e++=q;}B(r){i=e;*e++=1;*e++=r;}C(s){i=s;}D(O t){for(l=0;!*t;t=t[2])l+=
(y=t[1])[1];B(l);}E(O t){m=(y=t[1])[1];B(*(t=t[2])?-m:m-(D(t),l));}P(O t){for(i
=f,n=1;!*t;t=t[2])m=(y=t[1])[1],n?n=0,l=m:m-l&&(i=g);}G(O t){O s=t[2];c(t[1]);i
=i-g||!*(s=s[2])?s[1]:g;c(i);}Q(O t){A(b,t[2]);h=t[1];h[2]=i;i=h;}H(v,w){i=j+v*
3;if(!*i)*i=2,i[1]=i,i[2]=w;}J(O t){for(i=g;!*t;h=t[2],t[2]=i,i=t,t=h);}K(O s){
O t=g;for(;!*s;c(s[1]),A(i,t),t=i,s=s[2]);J(t);}c(O s){O t=h=s[1],u=x,z,a;i=0;
if(*s==1)i=s;if(*s>1)for(i=h,z=u;!*z&&(i=(a=z[1])[2],a[1]!=s);i=h,z=z[2]);if(!*
s&&*h>1&&((t=h[2])<d||t>e))*h-3?K(s[2]),((F)t)(i):((F)t)(s[2]);if(!i){for(t=t[2
],z=t[1],K(s[2]),a=i;!*z;A(z[1],a[1]),A(i,x),x=i,z=z[2],a=a[2]);for(;!*(t=t[2])
;c(t[1]));}x=u;}N(){O t=g;for(;L(),i;A(i,t),t=i);J(t);}L(){for(i=0;(k=getchar()
)==32||k==10;);for(l=n=o=0;~k&&!strchr(" \n()",k);o=o?o:k,l=l*10+(k-=48),n|=(O)
k>9,k=getchar());o?ungetc(k,stdin),n?H(o,C):B(l):k-40||N();}main(){H(78,C);g=x=
i;H(84,C);f=i;H(76,C);b=i;H(63,G);*i=3;H(68,Q);*i=3;H(43,D);H(45,E);H(61,P);for
(;L(),i;)if(c(i),*i)*i-1?printf("%c\n",(i-j)/3):printf("%d\n",i[1]);}
394393:02/10/03 02:58
使えるスペシャルフォームと関数はこれだけ。

D name lambda-list &rest body
? test then [else]
+ &rest numbers
- number &rest numbers
= &rest numbers

フィボナッチはこんな感じで。
(D f (x) (? (= x 0) 0 (? (= x 1) 1 (+ (f (- x 1)) (f (- x 2))))))
(f 20) -> 6765
>>393
どんどん凄くなってくけど、これを7行は難しいかも。
396!380:02/10/03 15:09
ひまだったので、(えせ)スロットに挑戦。
とくにスゲーということはないですが、せっかくなので。

#include <stdio.h>
#include <signal.h>
int x=30,y,a,b,c,o,p,q,r=0,s=0,t=0,u=0,v=0,w=0;char*m="0123456789abcdef";void
H(n){a?(a=0):b?(b=0):c?(c=0):0;}int main(){signal(SIGINT,H);for(printf("%d>",x)
,scanf("%d",&y);x>0;x+=y*(((m[o]&m[p])==m[q])+((m[r]&m[s])==m[t])+((m[u]&m[v])
==m[w]))*2-y)for(a=b=c=1;a|b|c;printf("%c%c%c\n",m[r],m[s],m[t])){a?o=r,r=u++,u
%=16:0;b?p=s,s=v++,v%=16:0;c?q=t,t=w++,w%=16:0;}return 0;}
397396:02/10/03 15:09
・仕様
3x3を表示するのは無理(環境に依存しないで画面クリアやカーソル移動
するのができない)なのでまんなかの横1列のみ表示。上と下の列は内部
的には存在する。最初に持ち点が表示されるので、賭け点を入力する。
持ち点がなくなったら終了。目はCtrl-Cでとめる。横の列1ライン揃いで2倍
リターン。3ラインあるので最大6倍リターン(目の並びや長さをいじってネ)。
#Ctrl-Cを目をとめるのに使っているので強制終了はできません。あしからず

・メモ
gcc2.95.3-5で-Wallオプションでおこられないことを確認済み。
規格マニアも(たぶん)安心。

・裏技(バグ技)
掛け点に負数を入れると。。

\rにしようかとも思いましたが、難しくなりすぎるので却下。
\nでも十分ムズイですが。
横を3ラインじゃなくて1ラインにすればもう1行はいけそうですな。

全然関係ないですが>376の(*p>47&*p<58)の&は&&のミスではないです。
比較系の演算子(と!)は、&よりも優先順位が高く、かつ、0/1を返すことが
保証されているので。
398363:02/10/03 18:26
>>397
>全然関係ないですが>376の(*p>47&*p<58)の&は&&のミスではないです。
そうでしたか。
手元にちゃんとした資料が無かったので確認できませんでした。
==を-に変換できたら組みこんでみます。
399Part2の989:02/10/03 19:00
自分の知らないところでどんどん短くなっていく感覚、いいなあ(w
演算子減らしてでも、複数の文の実行 (...) (...) サポートできないだろうか?
+で連結するのもアレなので…。
それと、関数定義の空読みの時とりあえず0を使ってますけど、
割り算のことを考えると0以外しないとまずいかも。
みんなで短くするにはですね、元となった圧縮前のコメント入りソースコードが
必要だと思いますがどうでしょう?パート1では砂嵐とかオセロとか
オリジナルのソースもアップされていたよね。
今は釣り馬鹿日誌もあるから、そちらでオリジナルコードを披露してみては?
401デフォルトの名無しさん:02/10/03 23:14
ホシュ
>>400
仕切んなハゲ。
>>410
すげえ使える
ワラタ
>>410 はすげぇ使えることを書かねばなりません。
406デフォルトの名無しさん:02/10/04 06:37
まだ大丈夫
あ、ageちゃったスマソ
こういうのは人がいないと盛りあがらんな
↓よろ
ruby!
ィャ
?
413308:02/10/05 02:49
>>359 &Fileフカーツ!!
using System;using System.Drawing;using System.Windows.Forms;class B:Form{Image
i;B(){Menu=new MainMenu(new MenuItem[]{new MenuItem("&File",new MenuItem[]{new
MenuItem("&Open...",new EventHandler(c))})});AutoScroll=1>0;}void c(object o,
EventArgs e){OpenFileDialog d=new OpenFileDialog();if((int)d.ShowDialog()==1){i
=Image.FromFile(d.FileName);AutoScrollMinSize=i.Size;Invalidate();}}[STAThread]
static void Main(){Application.Run(new B());}protected override void OnPaint(
PaintEventArgs e){if(i!=null)e.Graphics.DrawImage(i,new Point(0));}}
「&Fileは滅びぬ。何度でも甦るさ!ファイルメニューこそ、人類の夢だからだ!!」
>>414 …ゆ、夢じゃねー(w
>>413
その代わり、スクロールバーを動かすと絵がおかしくなる。
「絵がぁー!絵がぁぁーーっ!!」


・・・だからAutoScrollPosition(>>359)になってたのか。
納得。しかし書き換えると17文字超過・・・
>>417
あ,どっかで見た名前だと思ってたらあいつかあ。
「見たまえ,これが納期を7日間延ばしたという天のバグだ。インドらの野望とも呼ばれているがね」
>>418
やべぇ、すっごくワロタw
420308:02/10/05 22:24
AutoScrollPositionってPoint型だから、
e.Graphics.DrawImage(i,AutoScrollPosition);
でOKなのか。スクロールしても大丈夫そうだし。

using System;using System.Drawing;using System.Windows.Forms;class B:Form{Image
i;B(){Menu=new MainMenu(new MenuItem[]{new MenuItem("&File",new MenuItem[]{new
MenuItem("&Open...",new EventHandler(c))})});AutoScroll=1>0;}void c(object o,
EventArgs e){OpenFileDialog d=new OpenFileDialog();if((int)d.ShowDialog()==1){i
=Image.FromFile(d.FileName);AutoScrollMinSize=i.Size;Invalidate();}}[STAThread]
static void Main(){Application.Run(new B());}protected override void OnPaint(
PaintEventArgs e){if(i!=null)e.Graphics.DrawImage(i,AutoScrollPosition);}}

今度こそ・・・
421278:02/10/05 23:16
>>420
それでは画像が解像度情報を持つときに、
1ピクセルが1ピクセルとして表現されないから、
そこを何とかしないと、
スクロールバーと画像がちゃんと同期しないよ。
>>421
指摘サンクス。サンプル.jpgでテストしてたんで気づかなかった。
やはりRectangle(AutoScrollPosition,i.Size)でやるべきか・・・
423書き忘れ:02/10/05 23:35
適応型算術圧縮展開
exec [D|E] < src > dst

unsigned U[257],C=1,L,H=~0,W,X=256,N,K,A,Z,r,s,t,F,T=1<<30;g(a){for(r=0;a--;r=r
+r|t>>--s&1)!s?s=8,t=getchar():0;}p(a,b){for(;b--;++s>7?putchar(t),s=t=0:0)t=t+
t|a>>b&1;}o(x){for(p(x=L>>x,!Z);F;F--)p(~x,!Z);}main(i,v)char**v;{for(Z=69-*v[1
],Z?g(32),N=r:0;C;Z*C&&putchar(C-1)){Z||(i=getchar()+1);W=(H-L)/(K=++A+X);for(C
=X;K+=~U[C],Z?W*K>N-L:C-i;C--);H=L+W*(++U[C]+K)-1;for(L+=W*K;K=L^H,~K>>31|K&L&T
;L+=L,H-=~H,N+=Z?g(1),N+r:0)K>>31?++F,N^=T,L&=T-1,H|=T:o(31);for(K=A>>16?A=0:H;
K<=X;)A+=U[K++]/=8;}Z||(++F,o(30),p(0,37));}
昔作ったScheme風Lispインタープリタ。せっかく作ったので貼っとく参考にしてくれ。
機能減らさんと縮みそうにないけどな。
#include <stdio.h>
typedef*P,N;N H[4096],F,g[256],m,X,r,t,e,s,c,i;P A=H,D=H+1,M=H+2;G(x){x&&!(x&3)
&&M[x]!=m?M[x]=m,G(A[x]),G(D[x]):0;}S(){F=0;for(i=4092;i;i-=4)M[i]-m?A[i]=F,F=i
,M[i]=m:0;}C(x,y){N z;if(!F){m++;G(x);G(y);G(X);G(r);G(t);G(e);G(s);for(i=256;i
--;)G(g[i]);S();}F||exit(puts("nomem"));F=A[z=F];A[z]=x;D[z]=y;return z;}Q(){(c
=getchar())<0&&exit(0);c<33&&Q();}L(){N x;Q();return c-41?x=R(),C(x,L()):0;}R()
{return c-40?c*8+2:L();}a(x){putchar(x);}W(x){a(x&1?36:x&2?x/8:40);if(!(x&3)){
while(x)W(A[x]),a(32),(x=D[x])&3?a(46),W(x),x=0:0;a(41);}}U(x){s=C(x,s);}O(){i=
A[s];s=D[s];return i;}B(x){x?B(D[x]),X=A[x],E(),U(r):0;}N*V(x,y){return y?A[i=A
[y]]-x?V(x,D[y]):&D[i]:&g[x/8];}b(){for(;t;t=D[t])e=C(C(A[t],O()),e);for(t=r;X=
A[t],D[t];t=D[t])E();}E(){N x=1;U(e);U(t);while(x)x=0,r=X?~X&2?(t=D[X],r=A[X])-
650?r-610?r-266?r-586?B(t=X),O(),r&1?i=r/8,i?i-1?i-3?i-4?i-5?t=O(),C(t,O()):O()
==O()?930:0:(W(t=O()),t):(Q(),R()):D[O()]:A[O()]:(e=A[r],t=A[i=D[r]],r=D[i],b()
,x=1):(X=A[t],E(),X=r?A[D[t]]:A[D[D[t]]],x=1):(X=A[D[t]],E(),*V(A[t],e)=r):C(e,
t):A[t]:*V(X,e):0;t=O();e=O();}main(){g[65]=1;g[68]=9;g[67]=17;g[82]=25;g[87]=
33;g[61]=41;while(1)Q(),X=R(),E(),W(r),a(10);}
426425:02/10/07 00:02
シンボルはすべて一文字
スペシャルフォームは
(! var exp) ; 変数に代入 (Q exp) ; クオート
(L param body...) ; λ (I test then else) ; If then else
ビルトイン関数は
(C a d) ; cons (A x), (D x) ; car, cdr
(R) (W x) ; read, write (= x y) ; eq?
とりあえずハノイの塔
(! h (L (f t v d)
(I (= d ())
()
((L () (h f v t (D d))
(W (C (A d) (C f (C t ()))))
(h v t f (D d)))))))
(h (Q A) (Q B) (Q C) (Q (4 3 2 1)))
末尾再帰で無限ループ
(! z (L (x) (z x)))
(z (Q a))
>>425
げ、末尾再帰対応っすか。
参りました。
ラムダを見るとサザエサンハ ユカイダナのAAを連想してしまう…
DES暗号化ってありましたっけ?
430278:02/10/07 14:22
>>420
トイレでガンバッてたら、namespace使うのを思いついた。
「釣りバカ」の>>24も参考にさせてもらいました。
namespace System{using Drawing;using Windows.Forms;class B:Form{void c(object
o,EventArgs e){OpenFileDialog d=new OpenFileDialog();if((int)d.ShowDialog()==1
){b=new Bitmap(d.FileName);AutoScrollMinSize=b.Size;Refresh();}}protected
override void OnPaint(PaintEventArgs e){if(b!=null)e.Graphics.DrawImage(b,new
Rectangle(AutoScrollPosition,b.Size));}Bitmap b;[STAThread]static void Main(){
Application.Run(new B());}B(){Menu=new MainMenu(new MenuItem[]{new MenuItem(
"&File",new MenuItem[]{new MenuItem("&Open...",new EventHandler(c))})});}}}
431308:02/10/07 18:51
>>430 *^ー゚)b グッジョブ!!
namespace System・・・それは流石に思いつかなかったw
尽くせるだけの手を尽くしてもうだめぽと思ってたけど、
探せばあるんだな・・・
Refresh()は全く知らなかったんでMSDNで調べてきます。
>>429
関係ないけどDES符号ってどっかの国の外へは持ちこんじゃいけないとか
話なかった?
>多くの暗号学者によって研究されたにもかかわらず解読されたことはありません。

日経エレクトロニクス no.825(2002-7-1)号 P228「TechTale」より
>「あのー,山岸さん。ちょっと相談があるのですが」
>「どうしたー」
>「例の実験の件なんですが。実はですね,どうやら成功したようなんです」
>「え?何だって?」
>「DESの解読、うまくいったんですよ」
>>434
(#`Д´)<マヂデスカッ
調べたら2^43の平文と暗号文を使った線形解読法、ですた。
どのレベルの「解読」にもよりますな。
http://ne.nikkeibp.co.jp/NE/2002/020701/tt.html
http://www8.ocn.ne.jp/~a-little/Kumo/data/HPR054.htm
(DESだったかは忘れたが)輸出禁止なもんだから、どうにかして
広めたいと思ったある人は、ソースコードを載せた本を出版した
という話を聞いたことがある(本ならOKなんかいな?)。その本には
ご丁寧にOCRの方法まで載ってたとか。。
DESで言うならcryptぐらいをターゲットにするのが妥当かな
DESは転置テーブルとか謎の置換配列とかだけでかなりでかいぞ。
保守
IBM->HALみたいなのは簡単ですか?
って、簡単でしたね。
main(a,v){int c;while((c=getchar()+1))putchar(a>1?c-2:c);}
引数なしでエンコード、ありでデコード
hal < hal.c | hal dmy > hal.dec
442デフォルトの名無しさん:02/10/08 23:40
保守
あ、間違えた・・
main(a,v){int c;while(c=getchar()+1)putchar(a>1?c:c-2);}
えーと、保守はageなくても大丈夫だよ?>442
little endian用MD5。もう少し縮みそうな気もするが。

#include <stdio.h>
double sin(),fabs();char D[64]={128},b[128];unsigned s[4],X[16],C[2],x,y,z,w,E[
]={0x67452301,0xefcdab89,0x98badcfe,271733878};i,j,k,l,m,n,t,u;main(a,v)char**v
;{FILE*f=fopen(v[1],"rb");do{l=n=fread(b,1,u=64,f);C[1]+=((*C+=l*8)<l*8)+l>>29;
if(l-u){for(i=*C/8%u,j=i<56?56:120,i=j-i;i--;b[l+i]=D[i]);l=j+8;memcpy(b+j,C,8)
;}for(m=0;m<l;m+=u){memcpy(X,b+m,u);for(i=4;i--;s[i]=E[i]);for(j=0;j<4;j++)for(
i=-1,k="@AE@"[j];++i<16;k+="AECG"[j])w=t=(16-i)%4,x=s[++w%4],y=s[++w%4],z=s[++w
%4],y=s[t]+(j-3?j-2?j-1?x&y|~x&z:x&z|y&~z:x^y^z:y^(x|~z))+(w=fabs(sin(j*16+1.+i
))*(~0U+1.))+X[k=(k-u)%16],z="GLQVEINTDKPWFJOU"[j*4+i%4]-u,s[t]=x+(y<<z|y>>32-z
);for(i=4;i--;E[i]+=s[i]);}}while(n==u);for(memcpy(b,E,16);i<15;)printf("%02x",
b[++i]&255);}
446デフォルトの名無しさん:02/10/09 03:17
なんか、過去に出された作品見ると、
・79文字+改行
・78文字+改行
の2派が存在するみたいですけど、どっちが正しいんでしょうか?
>>445
こりゃまた圧縮されてるね。
MD5って128bitを吐き出す一方向ハッシュ関数のことなのか。
ファイル名を引数にして実行するのね。
自分自身を実行すると
c:\md5\Release>md5 md5.exe
a94f0a85a2906a403c16c7fc3ec78562
おー、なんか動いてる。やるね。
問題はこの数値があってるかどうかの検証が分からないことか・・・。
md5sum.exe拾ってきて、検証するのは?
Cygwinに入ってるだろ>md5sum
>>446
昔の端末は一行80文字だった。
それに収まるように、ということなので79文字+改行が正しい。
>>445
一行弱縮めてみた。

#include <stdio.h>
double sin(),fabs();i,j,l=16,m,n,t,u=64,g=16;unsigned s[4],X[32],B,C,x,y,z,w,k,
E[4]={0x67452301,0xefcdab89};main(a,v)char**v;{FILE*f=fopen(v[1],"rb");E[2]=~*E
;E[3]=~E[1];do{n=fread(X,1,u,f);C+=n*8;B+=(C<n*8)+n>>29;if(n-u){i=C/8%u;X[l=i<
56?14:30]=C;X[i/4]|=128<<i%4*8;X[++l]=B;}for(m=0;m<l;m+=g){memcpy(s,E,g);for(j=
0;j<4;j++)for(i=-1,k="@AE@"[j];++i<g;k+="AECG"[j])w=t=(g-i)%4,x=s[++w%4],y=s[++
w%4],z=s[++w%4],y=s[t]+(j-3?j-2?j-1?x&y|~x&z:x&z|y&~z:x^y^z:y^(x|~z))+(w=fabs(
sin(j*g+1.+i))*(~0U+1.))+X[m+k%g],z="GLQVEINTDKPWFJOU"[j*4+i%4]-u,s[t]=x+(y<<z|
y>>32-z);for(i=4;i--;E[i]+=s[i]);}memset(X,0,u);}while(n==u);for(;++i<g;printf(
"%02x",(E[i/4]>>i%4*8)&255));}
>>450
改行が 0x0A なのか, 0x0D 0x0A なのかという質問じゃないのかえ?
あ,Mac忘れてた。 0x0D も加えてくれ
>>439
あのテーブルってどうやって作ったんだろうなあ
生成できればなあ。
なんか強力な暗号で7行で書けそうなのってないかな?
>>452
端末から送るのがCRでホストが送るのがCRLFだっけ?
内部コードの話ならOS-9とかもCRだったかな?
>>454
端末からもホストからもCRでもLFでもなんでも趣味の世界です
一番多いパターンにあわせると
>>454
IBMの技術者と思われ。
S-BOXの中身はどうでもいいよ、とDESの仕様書には書いてあるけど
みんなそのまま使ってるしね。
ちなみにS-BOXの一部は
static const int sbox[8][4][16]= {
{ { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 },
{ 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8 },
{ 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0 },
{ 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 }
},
こんなのが8個もあっては7行じゃ絶対無理っぽい・・・。
457デフォルトの名無しさん:02/10/11 20:50
S-Box転置のない暗号化って少ないよね
Fealとか、EPOCHとかどう?日本のだけど。
458デフォルトの名無しさん:02/10/11 23:37
どーでもいい機能を追加したら9行になった上にwinmm.libリンクしないとしないと動かないさいたまべんち。
#include <windows.h>
#include <stdio.h>
#define _ (double)rand()/(double)RAND_MAX
INT WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT){DWORD current=timeGetTime();
char msg[256];LPCSTR str="さいたま";HDC hdc=GetDC(NULL);for(int i=0;i<1<<16;
i++){SetBkColor(hdc,RGB(255*_,255*_,255*_));TextOut(hdc,1024*_-10,768*_-10,
str,strlen(str));}ReleaseDC(NULL,hdc);InvalidateRect(NULL,NULL,FALSE);
sprintf(msg,"%f SaitamPerSecond",float(1<<16)/float(timeGetTime()-current));
MessageBox(NULL,msg,"SaitamaBenchMark",MB_OK);return 0;}

ベンチじゃないと6行。
#include <windows.h>
#define _ (double)rand()/(double)RAND_MAX
INT WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT){
LPCSTR str="さいたま";HDC hdc=GetDC(NULL);for(int i=0;i<1<<16;i++)
{SetBkColor(hdc,RGB(255*_,255*_,255*_));TextOut(hdc,1024*_-10,768*_-10,str,
strlen(str));}ReleaseDC(NULL,hdc);InvalidateRect(NULL,NULL,FALSE);return 0;}

…逝ってきます。
>445のMD5
512M以上でバグってたのを修正、>451から約1行削減

#include <stdio.h>
double sin(),fabs();size_t s[4],X[32],B,C,x,y,z,k,E[4],i,j=8,l=16,m,n=64,u=64,g
=16;main(char*a,char**v){FILE*f=fopen(v[1],"rb");for(a=E;j--;)a[j+8]=~(a[j]=1+j
*34);for(a=X;n/u;memset(X,m=0,u))for(n=fread(X,1,u,f),C+=n*8,B+=C<n,n-u?X[l=14+
n/56*g]=C,a[n]|=128,X[++l]=B:0;m<l;m+=g){for(memcpy(s,E,g);k="@AE@"[++j];)for(i
=0;i<g;s[-i++&3]=x+(y<<z|y>>32-z),k+="AECG"[j])x=s[1-i&3],y=s[2-i&3],z=s[~i&3],
y=s[-i&3]+(j-3?j-2?j?x&z|y&~z:x&y|~x&z:x^y^z:y^(x|~z))+X[m+k%g]+fabs(sin(j*g+i+
1.))*(~0U+1.),z="GLQVEINTDKPWFJOU"[j*4+i%4]-u;for(;j--;E[j]+=s[j]);}for(a=E;++j
<g;printf("%02x",a[j]&255));}
460458:02/10/12 00:46
#include <windows.h>
#include <stdio.h>
INT WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT){DWORD c=timeGetTime();char m
[256];LPCSTR s="さいたま";HDC h=GetDC(0);for(int i=0;i<1<<16;i++){SetBkColor(h,
RGB(rand()>>7,rand()>>7,rand()>>7));TextOut(h,4*(rand()>>7)-9,3*(rand()>>7)-9,s
,strlen(s));}ReleaseDC(0,h);InvalidateRect(0,0,FALSE);sprintf(m,"%f Saitama/s",
(1<<16)/float(timeGetTime()-c));MessageBox(0,m,"SaitamaBench",MB_OK);return 0;}

…なにやってんだ、オレ。
84.4SaitamaPerSecond
・・・ってくだらなすぎ(w
もうちっと面白いベンチマークキボンヌ
131Saitamaだった。
AAのさいたまが出てくるといいなぁ。
463デフォルトの名無しさん:02/10/12 04:26
>>462
あのAAって元々何なの?
自民党のマスコット?
464デフォルトの名無しさん:02/10/12 04:35
1 let a= 10
2 let b= 20
3 let c= a+ b
4 let d= c-a
5 let e= d-b
6 print e
7 goto 1
465デフォルトの名無しさん:02/10/12 04:39
void main(int ac, char[av]){
for(;;){
;
;
;
;
}
}

466281:02/10/12 07:56
MSに投げてた問い合わせが返ってきますた。
VS.NETのバグで本来[STAThread]は不要、>>279のコードは無罪とのこと。

正直、スマンカッタ。>>279
誤 >>279
正 >>278
お題:ボンバーマソ

テトリスが7行なら余裕でそ。
問題は2PにするかCPUにするかだが、2Pが妥当か。
>468
>テトリスが7行なら余裕でそ。
だったら、さっさとお前が作れよ
470278:02/10/12 15:16
>>466-467
VSのバグですか・・・。
貴重な情報ありがとうございます。
471458:02/10/12 22:56
>>461-462
AAを出すと7行に収まらないのですが…(ぉ
>>471
「さいたま」の太陽だけとかなら、何とかなる?
473458:02/10/13 00:44
>>472
sprintfとかMessageBoxとかを削れば(出力文字を減らせば)可能かも。
今日暇があったらまたやってみます〜。
>>446
俺は78+改行で作っていたけど、それは一部のUnix端末では79で折り返す
普通じゃない端末があったから。可能なら78+改行を目指す方がいいけど、
もちろん79+改行で何の問題もないです。
>>474
そんなものがあったのか…
ちなみに何ていう端末か教えて欲しい。

誰か78桁で折り返す端末を見つけ出せっ!
>>475
MSXだと縦横のサイズを変えられる。
あとは、端末エミュレータ(KTERMとか)。
・・・だめ?
477458:02/10/14 02:41
8行になってしまった。鬱だ。
しかも半角と全角が混ざっているからずれるし。
色々変態なこと書いてるのは目を瞑ってください。

#include <windows.h>
#include <stdio.h>
INT WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT){HDC h=GetDC(0);char m[64];int
x,y;LPCSTR s[5]={" \ │ / "," / ̄\ ","─( ゚∀゚ )─"," \_/ ",
" / │ \ "};LONG c=timeGetTime();for(int i=0;i<32768;i++){SetBkColor(h,rand
()<<9^rand());x=rand()%1024-20,y=rand()%768-20;for(int n=0;n<5;n++)TextOut(h,x,
y+18*n,s[n],12);}InvalidateRect(0,0,0);sprintf(m,"%f Saitama/s",32768000/float(
timeGetTime()-c));ReleaseDC(0,h);MessageBox(0,m,"SaitamaBench",0);return 0;}
>>477
ループ回数を10の倍数にして、
sprintfをwsprintfにして、%d.%dみたいに書けば、
sprintfが取れて、stdio.hをインクルードしなくて済むんじゃない?
>>477
どうせ機種依存なのだからstdio.hはいらないといってみるテスト
>>477
はcppだと思うので、
stdio.hの代わりに
EXTERN_C int sprintf(PSTR,PCSTR,...);
でどうよ。
さいたま〜縮めてみた〜、太陽がうまくこぴぺできなかった〜、直しといて〜
後はrand()を関数ポインタで置き換えるればいいかな〜

#include <windows.h>
#include <stdio.h>
INT WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,INT){char m[64];LONG c=timeGetTime
();HDC h=GetDC(0);for(int x,y,n,i=32768;i--;)for(SetBkColor(h,rand()<<9^rand())
,x=rand()%1024-20,y=rand()%768-20,n=5;n--;)TextOut(h,x,y+17*n,"\ │ / \0 "
" / ̄\  \0─( ゚∀゚ )─\0 \_/  \0/ │ \ "+n*13,12);InvalidateRect
(0,0,0);sprintf(m,"%f Saitama/s",32768000/float(timeGetTime()-c));ReleaseDC(0,h
);MessageBox(0,m,"SaitamaBench",0);return 0;}
482458:02/10/16 00:43
色指定とか座標指定とかをもっと短く書けるとうれしいけど意外に短くならないんだよなぁ…。
やっぱ見栄えとソース量はアンビバレンツなのだろうか…(泣)

ちなみに結果表示の文字に半角カタカナとかを用いるとちょっと縮まりますね(ぉ
483デフォルトの名無しさん:02/10/16 18:34
age
>>481
11998.535335 Saitama/sダターヨ。
485デフォルトの名無しさん:02/10/17 02:15
結果表示を少し変えて七行達成。
確認はcygwinのg++ Version 2.95.3-5
コンパイルは
 g++ saitama.C -mwindows -luser32 -lwinmm -mno-cygwin
でやった。

#include <windows.h>
extern"C"{int rand();int sprintf(char*,char*,...);}INT WINAPI WinMain(HINSTANCE
,HINSTANCE,LPSTR,INT){int x,y,n,j,i=1<<15;LONG c=timeGetTime();char m[i];HDC h=
GetDC(0);for(j=i;i--;)for(SetBkColor(h,rand()<<9^rand()),x=rand()%1024-20,n=5,y
=rand()%768-20;n--;)TextOut(h,x,y+17*n,"\ │ / \0 / ̄\  \0─( ゚∀゚ )"
"─\0 \_/  \0/ │ \ "+n*13,12);InvalidateRect(0,0,0);sprintf(m,"%f "
"埼玉s",j*1e3/(timeGetTime()-c));ReleaseDC(0,h);MessageBox(0,m,"埼玉Bench",0);}
486458:02/10/17 21:14
>>485
VC++6でコンパイルしてみた。

saitama.cpp(3) : error C2057: 定数式が必要です。
saitama.cpp(3) : error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
saitama.cpp(3) : error C2133: 'm' : サイズが不明です。
saitama.cpp(7) : warning C4508: 'WinMain' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。
cl.exe の実行エラー

がーそΣ( ̄□ ̄;)
487デフォルトの名無しさん:02/10/17 23:16
コンパイルオプションもプログラムの一部だよなぁとおもう今日この頃。
>>487
するってーと、プログラム本体が

 #include <windows.h>
 X

で、コンパイルオプション(コマンドライン)が

 g++ -DX="extern\"C\"{int rand();int sprintf(char*,char*,...); ..." \
  saitama.C -mwindows -luser32 -lwinmm -mno-cygwin

というのはありですか?
489485:02/10/18 02:59
>486
VC持ってないからチェキ出来ないけどコレでどうよ。

#include <windows.h>
extern"C"{int rand();int sprintf(char*,char*,...);}INT WINAPI WinMain(HINSTANCE
,HINSTANCE,LPSTR,INT){int x,y,n,j,i=1<<15;LONG c=timeGetTime();char m[99];HDC h
=GetDC(0);for(j=i;i--;)for(SetBkColor(h,rand()<<9^rand()),x=rand()%1024-20,n=5,
y=rand()%768-20;n--;)TextOut(h,x,y+17*n,"\ │ / \0 / ̄\  \0─( ゚∀゚ )"
"─\0 \_/  \0/ │ \ "+n*13,12);InvalidateRect(0,0,0);sprintf(m,"%f "
"埼玉s",j*1e3/(timeGetTime()-c));ReleaseDC(0,h);MessageBox(0,m,"埼玉Bench",0);}
>>489
ワーニング出るけどコンパイルできたよん(VC++6)
25381.874516 埼玉s ですた。
491480:02/10/18 22:15
これで、VC++6でもワーニング出ないと思う。
#include <windows.h>
EXTERN_C{int rand(),x,y,n,j,i=1<<15;}INT WINAPI WinMain(HMODULE,HMODULE,PSTR,
INT){ULONG k,c=timeGetTime();char m[99];HDC h=GetDC(0);for(j=i;i--;)for(SetBk\
Color(h,rand()<<9^rand()),x=rand()%1024-20,n=5,y=rand()%768-20;n--;)TextOut(h,
x,y+17*n,"\ │ / \0 / ̄\  \0─( ゚∀゚ )─\0 \_/  \0/ │ \ "
+n*13,12);InvalidateRect(0,0,0);k=timeGetTime()-c;wsprintf(m,"%d.%04d 埼玉s",(
j*=1000)/k,j%k*1000/k);ReleaseDC(0,h);MessageBox(0,m,"埼玉Bench",0);return 0;}
>>491
バチーリです
493485:02/10/19 03:19
結果表示を元に戻してみた。
これ、VC++でもOK?

#include <windows.h>
EXTERN_C{int rand(),x,y,n,j,i=1<<15;}INT WINAPI WinMain(HMODULE,HMODULE,PSTR,I\
NT){ULONG c=timeGetTime();char m[99];HDC h=GetDC(0);for(j=i;i--;)for(SetBkColor
(h,rand()<<9^rand()),x=rand()%1024-20,n=5,y=rand()%768-20;n--;)TextOut(h,x,y+n*
17,"\ │ / \0 / ̄\  \0─( ゚∀゚ )─\0 \_/  \0/ │ \ "+13*n,
12);InvalidateRect(0,0,0);c=timeGetTime()-c;j*=1000;ReleaseDC(0,h);wsprintf(m,
"%d.%04d saitama/s",j/c,j%c*1000/c);MessageBox(0,m,"SaitamaBench",0);return 0;}
30文字ほど減らしてみますた。
windows.hがstdlib.hをincludeしているので、randの宣言はやめた。

#include <windows.h>
char*p,m[]="\ │ /  / ̄\  ─( ゚∀゚ )─ \_/  / │ \ ";int x
,y,j,i=1<<15;INT NTAPI WinMain(HMODULE,HMODULE,PSTR,INT){ULONG c=timeGetTime();
HDC h=GetDC(0);for(;j++-i;)for(SetBkColor(h,rand()<<9^rand()),x=rand()%1024-20,
y=rand()%768-37,p=m;*p;p+=12)TextOut(h,x,y+=17,p,12);i*=j=1000;InvalidateRect(0
,0,0);c=timeGetTime()-c;wsprintf(m,"%d.%03d saitama/s",i/c,i%c*j/c);ReleaseDC(0
,h);return!MessageBox(0,m,"SaitamaBench",0);}
495458:02/10/19 10:32
貴方たちは神や…

#後はAAに黒い四角が紛れ込むのが問題かなぁ…
黒い四角は、AAの13バイト目に半角の空白があるのが原因。
↓そこだけ修正したver.

#include <windows.h>
char*p,m[]="\ │ /  / ̄\  ─( ゚∀゚ )─ \_/  / │ \ ";int x
,y,j,i=1<<15;INT NTAPI WinMain(HMODULE,HMODULE,PSTR,INT){ULONG c=timeGetTime();
HDC h=GetDC(0);for(;j++-i;)for(SetBkColor(h,rand()<<9^rand()),x=rand()%1024-20,
y=rand()%768-37,p=m;*p;p+=12)TextOut(h,x,y+=17,p,12);i*=j=1000;InvalidateRect(0
,0,0);c=timeGetTime()-c;wsprintf(m,"%d.%03d saitama/s",i/c,i%c*j/c);ReleaseDC(0
,h);return!MessageBox(0,m,"SaitamaBench",0);}
error C2055: 関数定義内で仮引数リスト以外が使われていました。
>>497
環境および、エラーの発生したと思われる箇所をどうぞ
スマソ
ソース:>>496 環境:VC++6.0 エラー:3行目
OS:Win98SE
501458:02/10/19 16:03
>>496
原因はわかっていたけど、素早い修正に感謝♪

しっかし、見れば見るほど恐ろしいソースコードだ…がくがくw
盛り上がってるネ。









俺はWindows持ってないんだけど...
503デフォルトの名無しさん:02/10/19 18:35
>>496
呼び出し規約から、WinMainの引数型は省略できるよー
WinMain(p,q,r,s)〜
504503:02/10/19 18:42
#include <windows.h>
char*p,m[]="\ │ /  / ̄\  ─( ゚∀゚ )─ \_/  / │ \ ";int x
,y,j,i=1<<15;INT NTAPI WinMain(q,r,s,t){ULONG c=timeGetTime();
HDC h=GetDC(0);for(;j++-i;)for(SetBkColor(h,rand()<<9^rand()),x=rand()%1024-20,
y=rand()%768-37,p=m;*p;p+=12)TextOut(h,x,y+=17,p,12);i*=j=1000;InvalidateRect(0
,0,0);c=timeGetTime()-c;wsprintf(m,"%d.%03d saitama/s",i/c,i%c*j/c);ReleaseDC(0
,h);return!MessageBox(0,m,"SaitamaBench",0);}

>>493
警告でるけどVCもokです
cl saitama.c user32.lib gdi32.lib winmm.lib
精度は落ちるし、文字数も増えるけど、
timeGetTimeの代わりに、GetTickCountを使うと、winmm.libが要らなくなる。
506458:02/10/19 19:21
>>505
精度が高いからtimeGetTime使ったけど、
特に細かく計測する必要は無いと考えればGetTickCountでもいいかもしれません。
winmm.libがいらないって言うのはおいしいのでw
>>502 ならばMac版とか作ってみるテスト。

extern "C"{extern int rand();}int main(){WindowPtr w;Rect R;short h,v;RGBColor
b={0,0,0},c;int i=65536;InitGraf(&qd.thePort);InitFonts();GetFNum("\pOsaka",
&h);SetRect(&R,0,0,1024,768);InitWindows();w=NewCWindow(0,&R,"\pSaitamaBench",
1,0,(WindowPtr)-1,1,0);SetPort((GrafPtr)w);TextFont(h);for(;i--;){c.red=rand()
*2;c.green=rand()*2;c.blue=rand()*2;h=(rand()>>5)-11;v=3*(rand()>>7);MoveTo(h,
v);SetRect(&R,h-2,v-11,h+48,v+2);RGBForeColor(&c);PaintRect(&R);RGBForeColor(
&b);DrawString("\pさいたま");}return 0;}

CW7、MacOS9.2で確認。
ベンチマークついてないし、AAも出てこないのでsage。
508503:02/10/20 03:38
>>505-506
精度不用ならclock()というのがありますけど。
>>507
CW持ってません。
MPWでもコンパイルできるのかな、
使ったことないけど(w
510デフォルトの名無しさん:02/10/22 02:28
>> 507
てかObject-Cで書いてくだされ(笑
511デフォルトの名無しさん:02/10/22 04:12
>>510

Objective-Cか。iveがたらなんだか。。(´・ω・`)
ネタが無いみたいだね。

過去の7行未達コードでも上げれば?
EUC(LF)/ShiftJIS(CR+LF)変換
exec S euc sjis
exec E sjis euc

#include<stdio.h>
int x=256,c,d;main(e,v)char**v;{FILE*r=fopen(v[2],"rb"),*w=fopen(v[3],"wb");for
(e=*v[1]-83;~(c=getc(r));c&&putc(c,w))c=c>>7?e?c-161U>62?d=getc(r),c>249?d|=c*x
,c=d%x,d-=d>64091?3356+(c<92?67:c-128U<28):c>73?c-85U>2?30837+(c-84?c-91?(c>83?
c-88?98-c:0:40)-1447:0:21):2907:2897,c=d/x,d%=x:0,(128|c+c+31+d/159)*x+d+(d>158
?2:97-d/128):c+36352:(d=getc(r),142-c?d-=c&1?97-d/224:2,((c-1)/2+49+c/223*64)*x
+d:d):c-13?10-c|e?c:3338:0,c/x&&putc(c/x,w);fclose(r);fclose(w);return 0;}
514デフォルトの名無しさん:02/10/26 18:52
age
515デフォルトの名無しさん:02/10/26 19:38
MP3エンコーダ
不可能ならu-adpcmでもいいから.
516デフォルトの名無しさん:02/10/26 23:13
なんかあんたらかっこよくみえるよ・・
517デフォルトの名無しさん:02/10/28 10:57
はやくUmlToJavaつくれや
>>517
お前が作れ
519デフォルトの名無しさん:02/10/28 17:07
7行C++逆コンパイラ作ってくれ。
もしできたら俺の処女をあげるよ。
おまいら適当なこと言ってるんじゃない。

実用的な7行(ホントに使うやつはいないと思おうが)を書いた>>513の流れを汲んで
次はShiftJIS→UniCode(エンコードは何でもOK)だろ!!
WindowsAPI使えば数行だと思うけど。
522520:02/10/28 19:19
Σ( ̄□ ̄; そうなの!? アホじゃん、俺。
>>519
臭そう
>>523
俺が綺麗に洗ってやるよ
525デフォルトの名無しさん:02/10/28 22:12
お前ら、>>504とかのさいたまベンチ何枚ですか?
おれは1Gのノート(XGA)で 9309.303 saitama/sです。
>>525 12946.661saitama/s P4-1.7G
#include <stdio.h>
int t,m,b[2];int w(int b){int r=0,a[]={7,56,73,84,146,273,292,448};for(t=0;t<
8;t++)if((b&a[t])==a[t])r=1;return r;}int s(int l,int p){int i,v,c=0,n=-1;for
(i=1;i<512;i*=2)if(!(i&(b[0]|b[1]))){if(w(b[p]|i))v=1;else{b[p]|=i;v=-s(l+1,!
p);b[p]^=i;}c=1;if(v>n){m=l?m:i;n=v;}}return c?n:0;}void d(){for(t=0;t<9;t++)
{putchar((b[0]&(1<<t))?'X':(b[1]&(1<<t))?'O':'-');if(t%3==2)printf("\n");}}
int main(){while(1){d();scanf("%d",&t);b[0]|=(1<<t);s(0,1);b[1]|=m;}return 0;}

○×作ってみた。0から8までを入力します。
チェックしてないので既に置いてある所は置かないでください。
>>520
UNICODEはテーブル持ってないと変換できなかったと思う。
(WindowsAPIもテーブル使ってたはず。記憶違いだったらすまん)
ずらして変換できるならJISだが、2番煎じだなぁ
あ、>>513にS-JIS<=>EUC<=>JIS変換で7行、時間があればやってみようかな
529!527:02/10/30 02:12
勝手に終局判定付けさせてもらいました。関数の返り値の型を
省略したので、-Wallで怒られるようになってしまいましたが。
あと、終局面は表示されませぬ。。

#include <stdio.h>
int t,m,r,b[2],a[]={7,56,73,84,146,273,292,448};w(int b){for(r=t=0;t<8;t++)r+=
(b&a[t])==a[t];return r;}s(int l,int p){int i=1,v,c=0,n=-1;for(;i<512;i*=2)if(
!(i&(*b|b[1]))){if(w(b[p]|i))v=1;else{b[p]|=i;v=-s(l+1,!p);b[p]^=i;}c=1;if(v>n
){m=l?m:i;n=v;}}return c?n:0;}main(){for(;!r;scanf("%d",&t),r=w(*b|=1<<t)?1:w(
(s(0,1),b[1]|=m))?5:(*b|b[1])==511?10:0)for(t=0;t<9;t++)putchar(*b&1<<t?'X':b[
1]&1<<t?'O':'-'),r=t%3&2?puts(""):0;puts("\0win\0lose\0draw"+r);return 0;}
前スレの囲碁を削りますた、間違ってたら誰かデバッグよろ(ぉ

int w[7]={1,-1,11,-11},s,d=1,b[121],u=4,y,i,m,g,e,k;r(a,c,f){int z,i=4;b[a]=f?0
:~b[a];for(s++;i--;b[z]-c||r(z,c,f))d+=!b[z=a+w[i]];b[a]^=-!f;}main(z){for(;d;)
{for(;m=z=i++<120;printf("%.2s","・○● \n"+(b[i]=y-10?y&&i-11U<99?b[i]:6:8)))
y=i%11;for(;i--;g-4&&k>m?m=k,z=i:0)for(k=g=0,e=4*!b[i];e--;!b[y]?k+=10:g++)b[y=
i+w[e]]==u?r(y,1,d=s=0),k+=s*(d-1U<3?d-3?300:20:0):0;if(u<4||(scanf("%d%d",&z,&
y),!b[z+=y*11]||puts("Err"))?d=z:0){for(i=4;i--;b[z]=u^6)b[k=z+w[i]]-u||(r(k,u,
d=s=0),d||r(k,u,1,w[2+u]+=s));r(z,u^=6,d=0);}}printf("ps\n%d,%d\n",w[6],w[4]);}
>>530
元が13行だったのを考えるとすごいね。

ただ、途中までうまく動いているようだけど、人間が囲んだ石が取れないで
残ったままになったりする。もともとのソースのバグかもしれんけど。

それとあまりにも弱すぎて打っていて面白くないなぁ。
オセロはまだ楽しめたけど。
ルールどおりはともかく囲碁は7行では難しすぎるかも。
囲碁は世界レベルのアルゴリズムですら
アマ1段に勝てませんので・・・
533デフォルトの名無しさん:02/11/01 17:00
これ作って。おねがい。
http://pc3.2ch.net/test/read.cgi/tech/1036013915/l50
あがっちゃってる。。。
ごめんなさいm(_ _)mごめんなさいm(_ _)m
おいおまえら。UmlToJavaはできましたか?
私は19才の♀で〜す。
彼氏募集中です。
年齢は20〜25ぐらいの人がいいなぁと思っています。
彼女募集中な人は私に電話下さい!
電話番号は
09084600360
だよ。
いたずら電話はやめてね。
電話待ってま〜す。
>>536
繋がりませんが。
538デフォルトの名無しさん:02/11/01 19:39
>>536
七行に縮めてから出直しなさい。
携帯からレスしてみるテスト。
>>533
作ってみたら6行で出来た。
今2chに書き込めないから後で書くYO!
これを7行にしてくだちい。おながいします。
http://pc3.2ch.net/test/read.cgi/tech/1028570486/649-654n
>>540
つーか、まず自分で縮めてみろ
542539:02/11/01 22:07
移動中にさらに縮めて5行達成。

#include<stdio.h>
int z=65536;int main(int h,char**g){char c,s[z],m[z],*p=m,*S=s;FILE*f;s[fread(s
,1,z-1,f=fopen(*++g,"r"))]=0;fclose(f);while(z)m[--z]=0;for(;;){if(!(c=*S++))
return 0;*p+=c-43?c-45?0:-1:1;p+=c-60?c-62?0:1:-1;if(c==46)putchar(*p);if(c==44
)*p=getchar();if(c==91)if(!*p)while(*S++-93);if(c==93)if(*p)while(*S-91)S--;}}

実行したいファイルを引数にして実行汁。
行儀が悪くても良いなら4行?
#include<stdio.h>
char c,s[65536],m[65536],*p=m,*S=s;main(h,g)char**g;{for(fread(s,1,65535,fopen(
*++g,"r"));c=*S++;){*p+=c-45?c==43:-1;p+=c-60?c==62:-1;c-46||putchar(*p);for(c-
44||(*p=getchar());c==91&&!*p&&*S++-93;);for(;c==93&&*p&&*S-91;)S--;}}
>>542-543
君等は神
せっかく頑張ってくれた539には悪いが、アッチのスレの>>1の説明の悪さのためか、
間違っているっす。
[は対応する]に対してジャンプします。
つまり、入れ子になるって事もあると言うこと。
入れ子になったときは、入れ子の対応する括弧に飛びます…。

++++[->++++[->+++<]<]>>.

これを実行すれば、0が印字されるはずなんですが、542のではエが印字されてしまう…。
あと、バイト配列は30000だそうです。
たぶん、正式な言語仕様と思われるところを貼っておきます。
では、がんばって〜〜応援してま〜〜す。
http://www.muppetlabs.com/~breadbox/bf/
仕様は見とらんがこれでどうよ? >>545
#include<stdio.h>
char c,s[65536],m[65536],*p=m,*S=s;main(h,g)char**g;{for(fread(s,1,65535,fopen(
*++g,"r"));c=*S++;){*p+=c-45?c==43:-1;p+=c-60?c==62:-1;c-46||putchar(*p);for(h=
c-44||(*p=getchar());c==91&&!*p&&*S++-93||--h;)h+=S[-1]==91;for(h=0;c==93&&*p&&
(*S-91||--h);)h+=93==*S--;}}
547 ◆leSXCx/JO2 :02/11/02 19:37
>>539
スマンコ
548539:02/11/02 23:17
>>545の規格でbefungeインタープリタを2タイプ作ってみた。

/*ちょっと行儀悪くして5行*/
#include<stdio.h>
int z=3e4;int L(int c){return c-2?!c:-1;}int main(int h,char**g){char c,m[z*2],
*p=m,*S=p+z,l;S[fread(S,1,z-1,fopen(g[1],"r"))]=0;while(z)m[--z]=0;for(;;){if(!
(c=*S++))exit(0);l=0;c-46||putchar(*p);if(c==91)if(!*p)while(l-=L(*++S-91));*(p
-=L(c-60))+=L(c-43);c-44||(*p=getchar());if(c==93)if(*p)while(l-=L(*--S-91));}}

/*ファイル名を'a'に固定で6行*/
#include<stdio.h>
int z=3e4;int L(int c){return c-2?!c:-1;}int main(void){char c,m[z*2],*p=m,*S=p
+z,l;FILE*f;S[fread(S,1,z-1,f=fopen("a","r"))]=0;while(z)m[--z]=0;fclose(f);for
(;;){l=0;if(!(c=*S++))exit(0);c-46||putchar(*p);*(p-=L(c-60))+=L(c-43);c-44||(*
p=getchar());if(c==91)if(!*p)while(l-=L(*++S-91));if(c==93)if(*p)while(l-=L(*--
S-91));}}

>>546
スゲー
がいしゅつでないといいけど、コッホ曲線。
コッホ曲線ってなに?ってすれがあったので、なんとなく作成。

#include <windows.h>
HDC h;void k(float a,float b,float i,float j,int l){SetPixel(h,a,b,255);if(!
l--)return;float w=i-a,m=j-b,c=a+w/3,d=b+m/3,n=.372678,e=a+w/2+m*n,f=b+m/2-w*n
,g=i-w/3,h=j-m/3;k(a,b,c,d,l);k(c,d,e,f,l);k(e,f,g,h,l);k(g,h,i,j,l);}
INT WinMain(HMODULE i,HMODULE,PSTR,INT){WNDCLASS w={67,DefWindowProc,0,0,i,0,0
,0,0,"a"};int a=513;HWND g;RegisterClass(&w);h=GetDC(g=CreateWindow("a","コッホ",
a<<19,0,0,a,a,0,0,i,0));k(0,a/2,a,a/2,8);ReleaseDC(0,h);Sleep(2000);return 0;}
>>549
WinMainのはどうやって起動すればよいのでしょう。
C言語にコピペしてやるとmain()が未解決と出てしまいますし。
拡張子をc++にしても同じですし。
C言語しか知りませんので、お教えください。
メッセージループ入れました。warning出ますが、、、。

#include <windows.h>
HDC h;HWND g;int l=7,a=513;void k(int a,int b,int i,int j){SetPixel(h,a/9,b/9,
255);if(l){l--;int w=i-a,m=j-b,c=a+w/3,d=b+m/3,e=a+w/2+m*.37,f=b+m/2-w*.37,g=i
-w/3,h=j-m/3;k(a,b,c,d);k(c,d,e,f);k(e,f,g,h);k(g,h,i,j);l++;}}WinMain(HMODULE
i,HMODULE,PSTR,INT){MSG m;WNDCLASS w={67,DefWindowProc,0,0,i,0,0,0,0,"a"};
RegisterClass(&w);for(h=GetDC(g=CreateWindow("a","コッホ",a<<19,0,0,a,a,0,0,i,0))
;~GetMessage(&m,g,0,0);DispatchMessage(&m))k(0,a*5,a*9,a*5);ReleaseDC(0,h);}

>>550
>cl k.cpp user32.lib gdi32.lib
でどう?
>>550
bccだったら
bcc32 -tW k.cpp
553539:02/11/04 00:29
さらに圧縮してみるテスト。

#include<stdio.h>
int L(int c){return c-2?!c:-1;}int main(int z,char**g){char c,m[60001],*p=m,*S=
p+30000;FILE*f=fopen(g[1],"r");S[fread(S,1,z=3e4,f)]=0;while(z)m[--z]=0;while(c
=*S++){while(c==91&!*p&&(z-=L(*++S-91)));*(p-=L(c-60))+=L(c-43);while(c==93&&*p
&&(z-=L(*--S-91)));c-46||putchar(*p);c-44||(*p=getchar());}return fclose(f);}
>>551,>>552
使っているのはVisualC++6.0です。bccとは何でしょう。
上げてもらったファイル名を、プロジェクト→設定→リンクさせればよいのでしょうか。
user32.lib、gdi32.libはすでに入っているのですが
cl k.cppだと開けなく、bcc32 -tW k.cppだと開けない+tWは無効となります。
プロジェクトオプションのところにbcc32 -tW k.cppはありました。
検索して、エントリポイントにWinMainを書く、#pragmaでやるなどやりましたが
ダメでした。ヒントっぽいのがありましたが、よく解りません、下に書きます。
「> 「外部シンボル "_main" は未解決です」と言われます。
> 何かライブラリをリンクしなければいけないということですよね?
そうなんですが、そもそもプロジェクトを作成するとき、
その種類として「Win32アプリケーション」を選んでいますか?
メイン関数としてWinMain()を使う場合、このプロジェクトを選択してください。
そうすればそれに必要な基本設定は自動的に行なわれるはずです。
> VC++でライブラリをリンクするにはどうしたら良いんでしょうか?
メニューバーの[プロジェクト]→[設定]すると、
「プロジェクトの設定」というダイアログが現れます。
そのダイアログの[リンク]の項目を選択し、[カテゴリ]として[一般]を選択します。
そうすると[オブジェクト/ライブラリモジュール]という設定項目が現れるので、
そこにリンクしたいライブラリ名を追加してください。
なお、インクルードファイルやライブラリファイルの検索ディレクトリの設定は、
メニューバーの[ツール]→[オプション]として現れるダイアログの[ディレクトリ]で設定画面へ進めます。
この設定は統合環境の設定であって、プロジェクト単位のの設定ではありません。」
と、書いてありました。cじゃなくc++の方なのですか?c++の法は殆解りません。
ただメモ帳からc++ファイルを作りテキストにコードをコピペして、
リンク操作などをして、実行しました。
スレ違いで申し訳ないのですが、解決方法をお教えください。
>>554
そういう初心者質問は別のスレでお願い…
>>555
解りました。逝ってきます。
>>545 の仕様を元にC言語トランスレータにしてみました。スカスカでつ。

#include <stdio.h>
int main(int ac, char * av[] ){char tbl[]="><+-.,[]", *to[]={"++p;","--p;",
"++*p;", "--*p;", "putchar(*p);", "*p = getchar();", "while (*p) {", "}", } ;
if ( ac != 2 ) return 1 ;
puts( "#include <stdio.h>\nint main(){\nstatic char buff[30000],*p=buff;" ) ;
for (char * p=av[1];*p!='\0';p++)for (int i=0;tbl[i]!='\0';i++)if (*p==tbl[i])
{ puts( to[i] ) ; break ; } puts( "return 0 ;\n}" ) ; return 0 ; }
558539:02/11/05 03:19
>557

圧縮。
#include <stdio.h>
int main(int c,char**v){char*o[]={"++p;","--p;","++*p;","--*p;","putchar(*p);",
"*p=getchar();","while(*p){", "}",""},i;FILE*f;if(c!=2)return 1;f=fopen(v[1],
"r");puts("#include<stdio.h>\nint main(void){char b[30000],*p=b;");for(c=fgetc(
f);c-EOF;c=fgetc(f)){for(i=0;"><+-.,[]"[i]!=c&&i<8;i++);puts(o[i]);}puts("retu"
"rn 0;}");return fclose(f);}
559539:02/11/05 03:23
間違えた。こっちが正しいコードでつ。

#include <stdio.h>
int main(int c,char**v){char*o[]={"++p;","--p;","++*p;","--*p;","putchar(*p);",
"*p=getchar();","while(*p){", "}",""},i;FILE*f;if(c!=2)return 1;f=fopen(v[1],
"r");puts("#include<stdio.h>\nint main(void){static char b[30000],*p=b;");for(c
=fgetc(f);c-EOF;c=fgetc(f)){for(i=0;"><+-.,[]"[i]!=c&&i<8;i++);puts(o[i]);}puts
("return 0;}");return fclose(f);}
560539:02/11/08 00:58
//befungeコンパイラ(要gcc)
#include <stdio.h>
int system(),i;int main(int c,char**v){FILE*f=fopen(*++v,"r"),*g=fopen("!.c","w"
);char s[99],*o[]={"putchar(*p);","*p=getchar();","while(*p){","}","++p;","--p;"
,"++*p;","--*p;"};fputs("#include<stdio.h>\nint main(void){static int b[30000],"
"*p=b;",g);for(;f&&(c=fgetc(f))-EOF;)for(i=8;0<i--;)fputs(".,[]><+-"[i]-c?"":o[i
],g);fputs("return 0;}",g);fclose(f);fclose(g);sprintf(s,"gcc !.c -o%s",*++v);
return system(s);}
http://pc3.2ch.net/test/read.cgi/tech/1028570486/853-
に出ていた二段階ソート法、現在8行。

#include <stdio.h>
void*calloc();char*s;FILE*f;int*A,g,i,j,*N,p,L[256],m[256],t[256],S=sizeof(int)
;C(a,b)const void*a,*b;{int c=*(int*)a,d=*(int*)b,r=strncmp(s+c,s+d,g-c<d?d:c);
return r?r:d-c;}main(l,v)char**v;{fseek(f=fopen(v[1],"rb"),0,2);g=ftell(f)+1;
rewind(f);for(fread(s=calloc(g,1),1,g-1,f);i<256;)L[i++]=-1;for(N=calloc(i=g,S)
;i--;)s[i]<=s[i+1]?N[i]=L[s[i]],L[s[i]]=i:m[s[i]]++;for(A=calloc(g,S);j<256;
qsort(A+i,p-i,S,C),t[j]=i-m[j],j++)for(p=i=m[j]+p,l=L[j];l>=0;l=N[l])A[p++]=l;
for(i=j=0;++j<g;A[t[s[A[i]-1]]++]=A[i++]-1)A[i]?0:i++;}
562デフォルトの名無しさん:02/11/09 01:07
から揚げはうまいYo
563!561:02/11/09 05:27
>>561
勝手に短縮。8行のままだけど。

#include <stdio.h>
void*calloc();char*s;FILE*f;int*A,g,i,j=256,*N,p,L[256],m[256],t[256],S=sizeof(
int);C(a,b)const void*a,*b;{int c=*(int*)a,d=*(int*)b,r=strncmp(s+c,s+d,g-c<d?d
:c);return r?r:d-c;}main(l,v)char**v;{for(f=fopen(v[1],"rb");g++,getc(f)>=0;);
for(rewind(f),fread(s=calloc(i=g,S*3),1,g-1,f);j;)L[--j]=-1;for(N=(int*)s+g;i--
;l<=s[i+1]?N[i]=L[l],L[l]=i:m[l]++)l=s[i];for(A=N+g;j<256;qsort(A+i,p-i,S,C),t[
j]=i-m[j],j++)for(p=i=m[j]+p,l=L[j];l>=0;l=N[l])A[p++]=l;for(i=0;--g;A[t[s[A[i]
-1]]++]=A[i++]-1)i+=!A[i];}

何をやってるコードなのかは理解しておりませぬ。なので、あってるかも
未検証。警告もでるし。それにしても、最初から縮めることを考えて
作られたのでないのはなかなか縮まりませんな。
>>563
二段階ソート法は、BWTを行う高速化法の一つですね。
正確にはsuffix arrayを作成する手法です。
565デフォルトの名無しさん:02/11/14 14:36
>>561
>>563
00 00 00 00 ... 00 という0並びのデータを与えると、正しくない。
2ch エンコーダ/デコーダ
http://pc3.2ch.net/test/read.cgi/tech/1028570486/649-654n
の 540 変換と MTF の部分のみ。微妙に違うかもしれないけど...

#include <stdio.h> // エンコーダ
typedef unsigned char uc;void main(int c, char **v){const int M=256,B=M<<8;uc*
z[M],s[B],d[B],*p,m[M],*q,t;int i=0,r,f[M];FILE*fi=fopen(*++v,"rb"),*fo=fopen(
*++v,"wb");for(;i<M;i++)m[i]=i;while(r=fread(s,1,B,fi)){putc(*s,fo);if(1==r)b\
reak;for(i=M;i>0;f[--i]=0);for(;i<r;f[s[i++]]++);*z=d;for(i=0;i<255;i++)z[i+1]
=z[i]+f[i];for(i=1;i<r;i++)*z[s[i-1]]++=s[i];*z[s[i-1]]=*s;for(p=d;p<d+r;p++){
q=m;if(*p-*q){for(t=*q;*p-*++q;t^=*q,*q^=t,t^=*q);*q=t;}putc(q-m,fo);*m=*p;}}}

#include <stdio.h> // デコーダ
typedef unsigned char uc;void main(int c, char **v){const int M=256,B=M<<8;uc*
z[M],s[B],*p,m[M],*q;int i=0,r,f[M],k,h;FILE*fi=fopen(*++v,"rb"),*fo=fopen(*++
v,"wb");for(;i<M;i++)m[i]=i;while((h=getc(fi))-EOF){putc(h,fo);for(r=0;r<B&&(k
=getc(fi))-EOF;r++){s[r]=m[k];for(q=m+k;q-->m;*(q+1)=*q);*m=s[r];}for(i=M;i>0;
f[--i]=0);for(;i<r;f[s[i++]]++);*z=s;for(i=0;i<255;i++)z[i+1]=z[i]+f[i];for(;0
<--r;)putc(k=*z[h]++,fo),h=k;}}

typedef とか const int のあたりは不要な気もするけど、今さら直すのも面倒なんで
そのまま。SSS 符号化/復号化の実装はちょっとムリっぽかったのでパス。
567デフォルトの名無しさん:02/11/16 12:51
ageage
>>566
ふと思った。符号化・復号をまとめられるんじゃないか、と。
でも、忙しくて自分じゃできないYo・・・
569デフォルトの名無しさん:02/11/17 23:59
言い訳すんなー!ばかちんがー!
570デフォルトの名無しさん:02/11/18 01:13
砂嵐って会ったけど、あれって単なるランダムなんだよな。
実際のTVに近づけるために横方向の周期性とか、そういったのを持たせられないかなぁ。
だれか「All-interval serie」を算出する関数考えてくんないかなあ。
572デフォルトの名無しさん:02/11/19 20:17
RSA公開鍵暗号実装しれ
573デフォルトの名無しさん:02/11/24 02:58
からあげからあげ
574依頼だ:02/11/24 18:32
>>574
おまいがやってみませんか?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main(int argc,char *argv[]){
FILE *fp;char str[1024], *fname=argv[1];int i,count=0,c;float sp;
time_t t1, t2;fp = fopen( fname , "r");
if(fp == NULL){printf("fopen失敗\n");exit(-1);}
time(&t1);
while(fgets(str,sizeof(str), fp) != NULL){
i=0;printf("%s",str);
while(1){
if(str[i] == '\n'){printf("\n");break;}
while(kbhit() == 0){}
c = getch();
if(c == str[i]){
printf("%c",c);
}else{ continue;}
i++;count++;
}
}
time(&t2);
fclose(fp);
sp = (float)count/(float)(t2-t1);
printf("タイプ数/秒=%f\n", sp);
return 0;
}
( ´,_ゝ`)
>>576
#include <stdio.h>
extern int getch();extern long time(long*);int main(int c,char**v){float x=0;
FILE*f=fopen(v[1],"r");long t,u;char*p,s[1024];if(f){for(time(&t);fgets(s,1024,
f);puts("")){printf(p=s);while(*p-10){c=getch();if(c==*p){putchar(c);p++;x++;}}
}x/=time(&u)-t;fclose(f);printf("タイプ数/秒=%f\n",x);}else puts("fopen失敗")
;return f?-1:0;}
579578:02/11/26 07:51
最後逆だった。
;return f?0:-1;}
580デフォルトの名無しさん:02/11/26 10:05
あっけない幕切れだな,おい
getch()とtime(long*)がなんたらって出てコンパイルできないす。
       コンパイルできないとか言うヤシは
( ´ー`)y━~ ちっとは考えろやゴルァ
Oo(´o` )y━~ 龍の文句はオレに言えぇ
584581:02/11/26 11:28
ごめんなさい、これでコンパイルできました。
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main(int c,char**v){float x=0;FILE*f=fopen(v[1],"r");long t,u;char*p,s
[1024];if(f){for(time(&t);fgets(s,1024,f);puts("")){printf(p=s);while(*p-10){
c=getch();if(c==*p){putchar(c);p++;x++;}}}x/=time(&u)-t;fclose(f);printf(
"%ftype/sec\n",x);}else puts("fopen失敗");;return f?0:-1;}
>>581
C++の場合は1行目を
extern "C" {int getch();long time(long*);}int main(int c,char**v){float x=0;
586581:02/11/26 11:47
>>585
なるほど。CとC++では変わるのですか。知らなかったす。
試したところ、確かにコンパイルできました。
どうもです。
Cだとextern要らなかったり。
#include <stdio.h>
int getch();long time(long*);int main(int c,char**v){float x=0;long t,u;char*p,
s[1024];FILE*f=fopen(v[1],"r");if(f){for(time(&t);fgets(s,1024,f);puts("")){p=s
;printf(s);while(*p-10){c=getch();if(c==*p){putchar(*p++);x++;}}}x/=time(&u)-t;
fclose(f);printf("タイプ数/秒=%f\n",x);}else puts("fopen失敗");return -!f;}
588デフォルトの名無しさん:02/11/28 03:13
このプログラムでド胆を抜けまつか?

#include<stdio.h>
int main(void){char k[]="A52A2245332A252B435B2222A2B2A2A23A2C32A3B5B2222A52B435"
"32A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B2A32A5D2C25D4A26C4A1",*p=k;
int i,c,b=1;while(*p){c=0;for(i=0;i<8;i++){if(*p=='0'){if(!*++p)break;b=!b;}
c=(c<<1)+b;if((*p)--=='A')*p='0';if(*p >= 'A')b=!b;}if(c)putchar(c);}getchar();
return 0;}
>>588
誤爆しました。
590デフォルトの名無しさん:02/11/28 13:42
過去の作品集めてあるところないですか?
7行ドラクエってのを見たいんですが
>>589
圧縮しますた。
#include<stdio.h>
int main(void){char i,k[]="A52A2245332A252B435B2222A2B2A2A23A2C32A3B5B2222A52B"
"43532A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B2A32A5D2C25D4A26C4A1",*p=k
;int c,b=1;while(*p){for(c=i=0;i<8;i++){if(*p==48){if(!*++p)break;b=!b;}c+=c+b;
65-(*p)--||(*p=48);*p>=65&&(b=!b);}c&&putchar(c);}getchar();return 0;}
592590:02/11/28 22:32
安西先生・・・俺ドラクエが見たいです・・・(ノД`)
>>592
ドラクエは7行になっていない。
現在dat落ちしている7行スレ2にあるわけだから、
それをみればいいわけで・・・
594安西:02/11/28 22:35
>>592 くん。あきめたらそこで試合終了だよ
ドラクエ転載

int a,b,c,d,e,f,g,h,i,j,k,l,m,n,z[6],r,x[9],y[9];char o[][9]={"アリーナ","クリフト"
,"ブライ","スライム","マーマン","トロル","オーク","キメラ","竜王","攻撃","防御","イオ","ホイミ","ヒャド"
,"who?","唱えた","ダメージ","回復","死んだ","敵出現","勝利","クリア","全滅","した",
"に","の","は","を","▼","\x1b[2J"," ","MP不足","\x1b[0m","\x1b[31m",
"\x1b[32m","\x1b[>5h"},q[]="00533",
p[]="vlb:XvlXvvlb:XvlXv:?B06060?:?B06060?SI?5?SNXSA?<2?2:?D234040302";
main(){srand(time(0));S(35);for(r=0;r<=3;r++){S(19);S(28);for(b=3;b<6;b++)
{p[r+b]=p[r+b+9];p[r+b+18]=p[r+b+27];}for(l=0;l/10!=3;){for(b=0;b<3;b++)
{if(p[b]!=48){N();S(b);C(63);C(10);for(c=1;c<4;c++){D(c);C(58);S(8+c+c/3*b);
C(10);}d=getch()-49;x[b]=d+d/2*b;if(d==0||(d==2&&b>0)){C(10);S(14);C(10);
for(c=1;c<4;c++){e=x[b]==3?c-1:r+c+2;if(p[e]!=48){D(c);C(58);S(e);C(10);}}
e=getch()-49;y[b]=x[b]==3?e:r+3+e;}}S(29);}for(b=r+3;b<r+6;b+=p[y[b]]!=48?1:0)
{d=x[b]=rand()%2==0?0:p[b+54]-48;e=rand()%3;y[b]=d==3?r+3+e:e;}for(n=0;n<6;
n++){z[n]=6;d=rand()%6;z[n]=d>2?r+d:d;for(b=n-1;b>-1;b--)n-=z[n]==z[b]?1:0;}
for(n=0,l=0;n<6&&l/10!=3;n++){b=z[n];if(p[b]!=48){N();d=x[b];S(b);d==0?
(S(25),S(9)):d==1?(S(26),S(10),S(23)):(S(26),S(d+9),S(27),S(15));C(7);C(10);
if(d<2||p[b+18]!=48){p[b+18]-=q[d]-48;e=y[b];f=p[b+36]-p[e+45];f=d==0?f<1?2:f:
d==2?20:d==4?30:0;if(d==2)for(g=b<=2?r+3:0,h=0;h<3;h++)Z(g+h);else Z(e);
for(k=0,l=0;k<r+6;k+=k==2?r+1:1)l+=p[k]==48?k<3?1:10:0;if(l%10==3){S(22);
S(28);exit(1);}if(l/10==3){S(20);S(23);}}else S(31);S(28);}}}}S(21);S(28);}
S(a){printf("%s",o[a]);a==28?(getch(),S(29)):a;}P(a){printf("%3d",p[a]-48);}
D(a){printf("%d",a);}C(a){printf("%c",a);}N(){for(a=0;a<3;a++){S(a);P(a);
P(a+18);C(10);}for(a=3;a<6;a++){S(p[a+r]!=48?a+r:30);C(10);}C(10);}Z(a){
if(p[a]!=48&&d!=1){S(a);if(d%2==0){S(24);m=f*(rand()%4+8)/10;p[a]-=m/=x[a]==1
?2:1;D(m);S(16);p[a]<49?(p[a]=48,C(10),S(18)):a;}if(d==3){S(26);S(17);S(23);
p[a]=p[a+9];}C(10);S(32);for(c=0,m=0;c<3;c++)m+=p[c]<49?4:p[c]<64?1:0;m>3?
S(33):m>0?S(34):m;}}

俺も好きだなあ。コピペして倉庫に放り込んであった。
>>595-596
バグねーか?
コマンド入力で Enter 押すと MP 増える。
MP が 0 でなければ、足りなくてもマイナスでも呪文が使える。
>>597
デバッグしてください。
マジ願いです。
>>598
見てみた。


とりあえず、この 2 つ。

// d=getch()-49;
for(d=3;d<0|d>2;d=getch()-49);

// e=getch()-49;
for(e=3;e<0|e>2;e=getch()-49);

これで 1〜3 以外を入力できなくなるので MP が変になる心配は無くなる。
MP 判定を直す必要は無いが、↓ で直す事ができる。

// if(d<2||p[b+18]!=48)
if(d<2||p[b+18]>=q[d])


しかし・・・もはやマシン語を解析しているかのようだ。
ワーク領域が p[] なんだもんなあ・・・。
600599:02/11/29 14:19
やべ、もうこんな時間かよ・・・(;´Д`)
ドラクエは別のスレでやってくれ。スレが破綻する。
「釣りバカ日誌パート1」
http://pc3.2ch.net/test/read.cgi/tech/1033220509/l50

ひさびさに存在を思い出した。
7行になるめどがつくまでは釣りスレでじっくり遊ぶのがいいかもだ。
>>595-596
bccでコンパイル通らないんだけど、何かインクルードしなきゃだめ?
>>603
( ´∀`)・ω・) ゚Д゚)・∀・) ̄ー ̄)´_ゝ`) Σ(´D`lll)
>>603
これ何のソースだかわかってる?
まさかJavaとか?
(゚Д゚)ハァ?
何のソースだかわかってるなら、bcc でもコンパイルできるはずなんだが。
stdio.h
stdlib.h
math.h

だけでいいはず。
あとansi.sysもいるな。

俺は入れてないから「もうダメポ」に。
>>609
595-596 のソースにか?
要らんだろ。

NEC98 でなければ ANSI.SYS は要る。
DOSIME.SYS にでも放り込んどきゃいいじゃん
>>611
bccなら>>609つけたほうがいいだろ。
違うわ、ゴメン。
bcc でも、別に何も追加やら修正やらしなくてもコンパイル通ったが。
616デフォルトの名無しさん:02/12/02 00:31
bccにVC6とMFC4.0、それとVB.netをHSPで導入したら、コンパイラできました。
ありがとうございます。
3点。
-4i点。
(AA省略)を7行ってできる?
puts("(AA省略)");
PRINT "AA省略"
END
'(AA省略)
>>622
バカ発見
>>623
バカ発見厨カコワルイ
>>624
お前、>>623が何故バカと言ったのか分かってないだろ?>>624=>>622か?
>>625
マジにわからんから教えてくれ。
実行しても何も起こらないとか、そういう事じゃないよな?
627デフォルトの名無しさん:02/12/04 21:51
repeat:cls:redraw 2:line 320,240,mousex,mousey:redraw 1:await 1:loop;;;;;;;;;;
8bit時代の人間にしかわからんバカさだな。
629デフォルトの名無しさん:02/12/05 14:40
>>628
プ 七行プログラムも書けないくせに
時代じゃねーよ 才能だボケ!
repeat:cls:redraw 0:line 320,240,mousex,mousey:redraw 1:await 1:loop;
631デフォルトの名無しさん:02/12/05 15:33
reiterate oppai
〃 nullpo
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>631
 (_フ彡        /
>>632
このAAなんかおかしいよな。
ポートスキャナー。使い方も含め6行。これ以上縮まるかなぁ?

// Usage:
//> javac P.java
// > java P [Host Name] [Start Port] [End Port]
class P{static void main(String[]a){int p=Integer.parseInt(a[1])-1;while(++p<=
Integer.parseInt(a[2])){try{new java.net.Socket(a[0],p);System.out.println(p);
}catch(Exception e){}}}}
635634:02/12/09 13:18
ちなみに>>634は、開きポートのみ出力。

例:ポート80があいていた場合。
--------------------------------------------------
C\test>java P 127.0.0.1 21 110
80

C\test>
--------------------------------------------------

みたいな感じ。わかりにくくてスマソ。
釣り馬鹿dat落ちした?
今日はいろんなスレが落ちていったナー。
638デフォルトの名無しさん:02/12/10 12:26
旧スレより下がってるから、age
639デフォルトの名無しさん:02/12/14 18:00
ついにpart1がdat落ち age
ついにここもdat落ち?
>>640
最近はネタも少ない上に、食いつきも悪いからね・・・。
part1の前半を第一のピークとすれば、
part1の後半からpart2の中盤くらいが第2のピークで。
part3になると、出足からけちがついていてちょっと落ち目だね。
601 がDQ ネタを追い出したからだ
DQN ネタを追い出したからだ
コテハンを追い出したから・・・ってのは結構あるかも
企画の無意味さに気づいてきたんじゃ…
もうだめか。。。
もうだめぽ
みんな はさーん
649634:02/12/20 04:32
俺っていったい・・・
>>649
いや、それはそれですごいと思うよ。
ただ7行スレの場合、7行以上のものを縮めるのが楽しい人も多いわけで。
>>649
> 俺っていったい・・・
大したやつだ!
何かネタない〜?俺はない。
アセンブリ言語
654634:02/12/21 02:19
 
>654
hagesiku同意
何これ
何って?冒頭読めば分かるじゃん。
>>656
ttp://www.isl.cs.gunma-u.ac.jp/~shingo/make/7line/7line.html
調子に乗りすぎ。駄作ばっかり並んでるし。
オセロの作者は、オセロだけではなくて他に色々高度なネタを披露しているけど、
こいつはテトリスだけだよな。自己満足のページ作るくらいなら、他の人の
作品もまとめた方がなんぼかマシだよ。

しかしあのテトリスは凄かったが。
>>658
自己満足なんだから放っておけ

しかし自己満足だとしても、オセロの作者のページなんかがあれば見てみたいな
>>658
何悔しがってんの?だっせー。
>>658
なんか「俺にはファンがいる」とか自分で言ってるのが痛いな
662656:02/12/21 20:29
俺が言うのもなんだけど。
>>657-661みたいな意見が7スレをだめにしたんだと思うよ。
>>662
加えて最近の駄作続きが拍車をかけたのか…
# DQって何がすごいの?
664656:02/12/21 20:41
656を見て駄作だらけとは感じないのか?
でも、れを摘み取ってはいけないと思うのだけど、どうよ。
それよりMPMっていうのが気になった。ぐぐっても見つからん。
666Sタソファソ:02/12/21 20:51
お前らSタソもここ見てるんだから励まそうよ!
ハァハァ
667Sタソファソ:02/12/21 20:52
>>661 ファンですが何か?
>>661
そんなこといって最後まで読んでんじゃん
俺もよんだけどなー
>>661
むなしく同意
でも、こいつが自分のwebでオナニーしてるだけなら文句は言わない。
奴はちょっとでも自信があると、ここで連投するから鬱陶しいと思われ
#技術力も発想力も言うほど無いしな
>>666 メールアドレスワラタ
>>669
ちまちまうpすることが、非難されてるけど、それが7行スレを衰退させたと思う。
あくまでも俺は、だけど、連投賛成。
>671
7行達成していないならば、自分ではもうどうしようもなくなってからアップすべきだな
例:砂嵐シミュレータ、ハフマン、マインスイーパ、等

Sは自己満足のためだけだったから鬱陶しかった。典型的ヲタク臭がしたのは俺の気のせいか?
#それに出来上がった作品も、遊んでみてなんだかいまいちだったしな
>>672
でも自分と違うテクニックを持っている他人の出現を求めるには、
「自分ではどうしようもなくなってから」では遅いということを痛感するよ。
part1の時は俺も投稿したことがあるけど、
意見レスはあっても、結局プログラムのレスは付かなかった。
「自分ではどうしようもなくなってから」という状態は、他人が手をつけにくいという、
技術的な問題も含んでいるし、いまさら参加できないという精神的な問題もあると思う。

俺もS氏のテトリスに参戦しようと思ったけど、表明が遅すぎて何もできなかった。
674671:02/12/21 21:22
>>672>>673
昔から言われていたが、7行スレの見方に複数意見があることは間違いないですか?

・縮める過程を見せろ、あるいは参加したい
・7行に到達した作品だけをもってこい
>>672
日記見てると、どちらかというと典型的な研究者だな。
だから自分の成果はどんどん公表したいんだろうよ。
結局のところSは痛い香具師
そしてプログラムで語らない俺らも痛い香具師
>>674
俺的には
>・縮める過程を見せろ、あるいは参加したい
だな。どんどん短くなってく様を見たい。
いきなり完成品投稿されてもフーンとしか思えない。

>>662
>>660も?
10 PRINT "だったら俺は痛くない?":GOTO 10
・7行になりそうに無いネタ振ってくるな
・つまらんネタ振ってくるな
http://pc.2ch.net/tech/kako/984/984182993.html
パート1の60、トリッキー1、*nix厨房、そういった奴らが数人集まって
はじめて良スレが出来上がるんだろうな。
60の技術力は凄いし、トリッキーの1はスレの方向の誘導がすごいうまいと思う。
彼らの兼ね合いも読んでいて面白いし。こういう人と仕事したいね。

みんなもパート1読んでなごめやゴルア
>>679
>・7行になりそうに無いネタ振ってくるな
テトリスはなりそうにないのになっちゃったから、一応ネタを振るだけなら許可。

>・つまらんネタ振ってくるな
こっちは激しく同意
>>680
確かにいいことを言っているが、現状はどうしようもない
奴らはもう帰ってこないだろう。
683過去参(略:02/12/28 02:20
活気がなくなってきたんで、とりあえずこの辺で









===== 糸冬 了 =====
あ、久しぶりに来たら、終わってた。
ちょっと寂しいな・・・
>>684
あなたが書いてくれればまた始まりますよ。
/*
*/
/*/*/*/*/*
*/
あずきちゃんDVDBOX買って馬鹿になろう!
http://www.starchild.co.jp/special/azuki
大阪キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
ITバブルの中で様々な幻想が語られた。

リアル経済ならぬバーチャル経済しかり。
ITによる失業者の吸収しかり。
「これからは2ちゃんねるの時代だ」のごとき匿名幻想しかり。

IT社会はリアルワールドにおける
信頼と責任抜きにはありえないというだけの話だ。
食えりゃなんでもいいよ。
694デフォルトの名無しさん:03/01/09 14:45
ID:ZBsKvw39(・∀・)カエレ!クルナ!イッテヨシ!
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
おぺら6.05からテスト
書けてるよ〜
そうそう、しかし保護は無理だろ、責任追及されたら誰かが責任とらないといけないんだし。    
>>183
きわめてそれっぽい
えーっと、


IPの話はどこへ、、、(^_^;)
みんなで博之を訴えまくるか。
名誉毀損のレス1つ1つに対して民事を起こす。
10億件とか。
んで判決間際で取り下げ。
裁判所を麻痺させろ!!
>正直、本当の危機に直面しないと動かんだろうな。>2ちゃんねらー

動くってどうするんだよ?
なくなったらなくなったでいいや。
という人が多いんだよ。
なんだよ ひろゆき とうとうやっちゃったな
つまんねーネタがネタにならねーじゃねえか
もう だ・め・ぽ・・・
じゃあ今までIP、IPって騒いでたのは何だったんだよ?(^^;
ニャロ
真面目な質問だったのか・・・。

一見違うように見えるんじゃなくて趣旨が違います。
趣旨を理解できないアホなボランティアが多いのは確かですが、
真似してはいけません。
じゃあさトップに閲覧料1分1億円てかいといて訴えられるたびに請求したら良くない?
>>ひろゆき
女紹介してくれ
http://qb.2ch.net/test/read.cgi/accuse/1042131034/

312 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 19:59 ID:jWxHxvti
全部にいれてみた。

真っ先に帰るのが普通の客なんでないかな??冷やかしの人に裁判沙汰のリスクは
おえないでしょ。
本職はIP位ではへこたれずに留まるだろうけど、暫らくは半端な厨房が通常板へ
なだれ込んで無差別に悪さ(差別コピペ)をする、っつー事になりそう・・・

ひろのぶさーん。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
幹事よろしく!!
正当な内部告発をにちゃんに書くな
なんでもかんでもバシバシ訴えると、ヤブヘビになる件も出てくると思うんだよね。
そういう意味では、企業レベルよりも個人レベルの要請が増えるのかもしれない。
北欧に行くってさ

172 :ひろゆき ◆3SHRUNYAXA :03/01/11 05:31 ID:kSb7xo24
北欧は放浪して資源を貯めれるので、
逃げ回ってると死なない。 
だから、時々タイーホあるやん
意見を聞いてもらうために「次スレたってないようなのでこちらに」は
 
 やめろ。
つーかトリップもキャップもついてないし。
600,000,002だった・・・(´・ω・`)
ビビタ・・・
勇気=マンコを示せ!!
前スレで写真うpした奴の話は本当だったのか・・・
疑ったりして悪いことしたな・・・
まぁ本当にひろゆきが金払う必要があるなんて思ってる知能指数0の基地外は
2ちゃん内部にはいないからな
閑話休題;

LZW互換?圧縮/復元 ( ttp://multix.jp/ )

$ perl lzw_encode < 圧縮元ファイル > 圧縮後ファイル

#!perl -w
binmode STDIN;binmode STDOUT;if(read STDIN,$_,1){$C=ord;$I=256;while(read
STDIN,$_,1){if($E=$H{$D=$C<<8^ord}){$C=$E;next}$H{$D}=$I++if$I<4095;
$B.=pack"v",$C;$C=ord}$B.=pack"v",$C}$B=unpack"h*",$B.pack("v",4095);
$B=~s/(...)0/$1/g;print pack("h*",$B."f"x(length$B&1))

$ perl lzw_decode < 圧縮済ファイル > 復元ファイル

#!perl -w
binmode STDIN;binmode STDOUT;$/=undef;if($B=unpack"h*",<>){
$B=~s/(...)/${1}0/g;@B=unpack"v*",pack("h*",$B);for(@C=($I=0);$I<@B;$I++){
exit if($_=$B[$I])==4095;@S=();while(255<$_){push@S,$C[$_-256];$_=$B[$_-256]
}print pack("C*",$_,reverse@S);@C[$I-1,$I]=($_,$_)if$I<3840}}

マジでこんなのに特許がどうのとブータレるUN○SYSはともかく。
C/C++ で書くと何行になるんだこれ。
何を今更・・・
642 が核心を突いてるぞ!

(トリップ便乗!)
一人でいろいろ作業するのは大変なので
分業することにしたようですよ。
>>723のと同作者。この圧縮法は既出?

reflexive_encode

binmode STDIN;binmode STDOUT;sub P{defined($_=getc)&&push(@B,ord)}&P;$I=256;
while(@B){&P;@B<4&&&P;$U=0;while($#B>$U){if($R=$H{$B[$U]<<12^$B[$U+1]}){splice
@B,$U,2,$R;if($#B==$U){&P}&P;$U+=$U?-1:1}else{++$U<32||last}}$H{$B[0]<<12^
$B[1]}=$I++if$I<4095&&@B>1;$B.=pack"v",shift@B}($B=unpack"h*",$B."\xFF")=~
s/(...)0/$1/g;print pack("h*",$B."f"x(length$B&1))

reflexive_decode

#!perl -w
binmode STDIN;binmode STDOUT;$/=undef;if($B=unpack"h*",<>){($B.="fff")=~
s/(...)/${1}0/g;@B=unpack"v*",pack("h*",$B);for($I=0;$I<@B;$I++){($_=$B[$I])==
4095&&exit;@C=($_);while(@C){if(($_=pop@C)<256){print chr}else{$D=$B[$_-256];
push@C,($E=$B[$_-255])==$_?$D:$E,$D}}}}

1MBのゼロベタファイルが33バイト、
16文字x4K反復の64KBテキストが78バイトになりよる。
それぞれを4倍量にしても3バイトずつしか増えネェ(´д`;
同じソースではLZSSが1/8、LZWで1/342が目一杯。
まあ並のファイル相手じゃどれも大差ないんだケド。
728山崎渉:03/01/13 19:02
(^^)
729山崎渉:03/01/15 18:15
(^^)
730デフォルトの名無しさん:03/01/19 23:51
保守
731sage:03/01/20 01:39
ガイシュツならスマン。円周率計算なら

int a=10000,b,c=8400,d,e,f[8401],g;main(){
for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}

とか

main(){int a=1e4,c=3e3,b=c,d=0,e=0,f[3000],g=1,h=0;
for(;b;!--b?printf("%04d",e+d/a),e=d%a,h=b=c-=15:f[b]=(d=d/g*b+a*(h?f[b]:2e3))%(g=b*2-1));}

なんてのがあったな。
どういう公式使ってるのかわかった香具師は教えれ
732ccc:03/01/20 01:43
http://click.dtiserv2.com/Click/127-45-4493
      ★お話しませんか?★
733ぬるぽ:03/01/20 06:09
http://pc.2ch.net/test/read.cgi/prog/1042017145/l50
      ★ぬるぽしませんか?★★
  ∧  ∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>733
 (_フ彡        /
735山崎渉:03/01/23 20:08
(^^)
736デフォルトの名無しさん:03/01/29 19:46
鯖がpc3->pc2記念
>>732-734にワラタ
円周率

$pi=314;@pi=split//,$pi;$b=hex(join'',reverse@pi)>>shift@pi;$c=$b-1;$d=$b+1;
$n=$b|$c>>shift@pi|$d>>shift@pi;$c=chr$c;$d=chr$d;@a=("\n",' ');
foreach(split//,'@QijネヘLM'){push(@a,"$c$_")}foreach(split//,'2163602428795-2')
{$a.=$_=~/\d/?$a[$_]:"$c$d"}for($i=0;$a.=pack('C2',$b,$n),
(length($_=substr($pi,$i,2))==2);$n+=$_*(1,-1)[$i++&1]){}
print$a; #use jcode;print Jcode->new($a,'sjis')->euc;
>738
実行してみてワロタ
740俺もワロタ:03/02/08 23:26
>>738
ガッ
SOCKS4 Proxy 10行・・・
import java.net.*;import java.io.*;public class Z extends Thread{public static
void main(String[]a)throws Exception{ServerSocket s=new ServerSocket(1080);for
(;;){Z z=new Z();z.y=s.accept();z.start();}}Socket y;OutputStream o;InputStream
w;byte[]b=new byte[512],x=new byte[4];public void run(){int i;try{if(w!=null)
for(;(i=w.read(b,0,512))>=0;o.write(b,0,i),o.flush());w=y.getInputStream();o=y.
getOutputStream();for(;;){w.read(b,0,8);for(;w.read()>0;);i=b[1];b[0]=0;b[1]=90
;o.write(b,0,8);o.flush();if(i==2||i==1){for(i=0;i<4;i++)x[i]=b[i+4];Socket s=
new Socket(InetAddress.getByAddress(x),((b[2]&255)<<8)+(b[3]&255));Z z=new Z();
z.w=s.getInputStream();z.o=o;z.start();z=new Z();z.w=w;z.o=s.getOutputStream();
z.start();break;}}}catch(Exception e){}}}
9行になりましたもうおしまいです。
import java.net.*;import java.io.*;public class Z extends Thread{int i,k;public
static void main(String[]a)throws Exception{for(ServerSocket s=new ServerSocket
(1080);;){Z z=new Z();z.k=1;z.y=s.accept();z.start();}}OutputStream o,l;public
void run(){try{w=w!=m?w:y.getInputStream();o=o!=l?o:y.getOutputStream();for(;k<
1;i=w.read(b),o.write(b,0,i));for(;;){w.read(b);b[0]=0;i=b[1];b[1]=90;o.write(b
);k=((b[2]&255)<<8)+(b[3]&255);w.read(b);o.write(b);for(;w.read()>0;);if(i==2||
i==1){z=new Z();z.y=new Socket(InetAddress.getByAddress(b),k);z.o=o;z.start();v
=new Z();v.w=w;v.y=z.y;v.start();break;}}}catch(Exception e){}}Socket y;byte[]b
=new byte[4];Z z,v;InputStream w,m;}
>>738
禿げ藁
744デフォルトの名無しさん:03/02/14 22:44
今日のお昼はから揚げでしt
>>738
  ∧_∧
 ( ´∀`)< ぬるぽ
>>745-750
ガッ
747デフォルトの名無しさん:03/02/19 21:44
ネタ希望
>>747
複数文字列のパターンマッチングとか。

実装例)fgrep
アルゴリズム) AC法、CW法
749デフォルトの名無しさん:03/02/20 00:22
>>747

ソースコードをHTML出力するプログラム

・外部データとしてkeyword.txt(名前は何でもいい)を読み込み
 そこに記載されているキーワードには色をつける。
・コメントにも色をつける
・できれば文字列リテラル("〜"、'〜')にも色をつける。

みたいな。
>>749
lex使ってもいいでつか?
>>750
できれば使わない方向で。
>>748 を実装し、そのさらなる応用として>>749
みたいな。
>>749
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char d[4][5]={"<","<",">",">"};void main(int c,char*v[]){char h[256][256],
b[1024];int i=0,j,k,l;FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)){fgets(
h[i],256,f);if(h[i][strlen(h[i])-1]==10){h[i][strlen(h[i])-1]=0;}i++;}fclose(f);
f=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w");while(!feof(f)){memset(b,0,
1024);fgets(b,1024,f);for(k=0;k<strlen(b);k++){for(l=0;l<2;l++){if(memcmp(b+k,d[
l*2],1)==0){memmove(b+k+3,b+k,strlen(b)-k-1);memcpy(b+k,d[l*2+1],4);k+=4;}}for(j
=0;j<i;j++){l=strlen(h[j]);if(memcmp(b+k,h[j],l)==0){memmove(b+k+l+24,b+k+l,
strlen(b)-k-l);memcpy(b+k,"<FONT COLOR=BLUE>",17);memcpy(b+k+17,h[j],l);memcpy(b
+k+l+17,"</FONT>",7);k+=l+24;}}}fputs(b,e);fputs("<BR>",e);}fclose(e);fclose(f);
}


コメントにもリテラルにも色が付ける事が出来なかった・・・∧||∧しかも13行だし・・・
753752:03/02/20 23:25
修正
char d[4][5]={"<","&lt;",">","&gt;"}
&は半角
>>752
よく見ずにレスするけど、TABの展開作業ってしてる?
>>752
コメント&リテラル色付き13行。
標準出力だから使い勝手悪いし、一行コメントに行連結バグあるけど。

#include <stdio.h>
char*strdup(char*),*s="<font color=",*e="</font>",t[999],*p,*w[999],**q;int(*f)
(const char*,...),(*g)(FILE*),d;main(int c,char**v){FILE*i=fopen(v[1],"rt"),*k=
fopen("keyword.txt","r");f=printf;g=fgetc;q=w;while(fscanf(k,"%s",t)-EOF)*q++=
strdup(t);*q=0;f("<html><body><pre>");while((c=g(i))-EOF){if(isalpha(c)||c==95)
{p=t;*p++=c;while(isalnum(c=g(i))||c==95)*p++=c;ungetc(c,i);*p=0;q=w;while(*q){
if(!strcmp(t,*q))break;q++;};if(*q)f("%sred>%s%s",s,t,e);else f(t);}else if(c==
47){if((c=g(i))==42){f("%steal>/",s);do{a(c);while(a(c=g(i))-42);}while((c=g(i)
)-47);f("/%s",e);}else if(c==47){f("%steal>//",s);for(;;){while((c=g(i))-10)a(d
=c);if(d-92)break;a(c);}f("%s\n",e);}else{a(47);ungetc(c,i);}}else if(c==34||c
==39){f("%sblue>%c",s,c);while((d=g(i))-c)a(d);f("%c%s",c,e);}else{a(c);}}f(
"</pre></body></html>");return 0;}a(int x){switch(x){case 38:f("&amp;");break;
case 60:f("&lt;");break;case 62:f("&gt;");break;default:f("%c",x);}return x;}

最後2行の&は半角で。
>>749
挫折しますた
757752:03/02/21 03:04
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char d[4][5]={"<","<",">",">"};void main(int c,char**v){char h[256][256],b
[1024],g[256];int i=0,j,k,l,m;FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)
){fgets(h[i],256,f);if(h[i][strlen(h[i])-1]==10){h[i][strlen(h[i])-1]=0;}i++;}
fclose(f);f=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w");while(!feof(f)){
memset(b,0,1024);fgets(b,1024,f);m=0;for(k=0;k<strlen(b);k++){for(l=0;l<2;l++){
if(b[k]==d[l*2][0]){memmove(b+k+3,b+k,strlen(b)-k-l);memcpy(b+k,d[l*2+1],4);k+=3
;}}if(b[k]==0x22){m=~m;}if(m==0){if(memcmp(b+k,"//",2)==0){memmove(b+k+20,b+k+2,
strlen(b)-k-2);memcpy(b+k,"<FONT COLOR=GREEN>//",20);memcpy(b+strlen(b),
"</FONT>\0",8);break;}if(b[k]==0x9){memmove(b+k+24,b+k+1,strlen(b)-k-1);memcpy(b
+k,"    ",24);k+=23;}for(j=0;j<i;j++){l=strlen(h[j]);if(
memcmp(b+k,h[j],l)==0){memmove(b+k+l+24,b+k+l,strlen(b)-k-l);sprintf(g,
"<FONT COLOR=BLUE>%s</FONT>",h[j]);memcpy(b+k,g,l+24);k+=l+23;}}}}fputs(strcat(b
,"<BR>"),e);}fclose(e);fclose(f);}

TAB展開、コメント(//)色付き、リテラル内のキーワード色付け防止機能追加
頭痛くなってきた・・・
758752:03/02/21 03:06
修正
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char d[4][5]={"<","&lt;",">","&gt;"};void main(int c,char**v){char h[256][256],b
[1024],g[256];int i=0,j,k,l,m;FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)
){fgets(h[i],256,f);if(h[i][strlen(h[i])-1]==10){h[i][strlen(h[i])-1]=0;}i++;}
fclose(f);f=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w");while(!feof(f)){
memset(b,0,1024);fgets(b,1024,f);m=0;for(k=0;k<strlen(b);k++){for(l=0;l<2;l++){
if(b[k]==d[l*2][0]){memmove(b+k+3,b+k,strlen(b)-k-l);memcpy(b+k,d[l*2+1],4);k+=3
;}}if(b[k]==0x22){m=~m;}if(m==0){if(memcmp(b+k,"//",2)==0){memmove(b+k+20,b+k+2,
strlen(b)-k-2);memcpy(b+k,"<FONT COLOR=GREEN>//",20);memcpy(b+strlen(b),
"</FONT>\0",8);break;}if(b[k]==0x9){memmove(b+k+24,b+k+1,strlen(b)-k-1);memcpy(b
+k,"&nbsp;&nbsp;&nbsp;&nbsp;",24);k+=23;}for(j=0;j<i;j++){l=strlen(h[j]);if(
memcmp(b+k,h[j],l)==0){memmove(b+k+l+24,b+k+l,strlen(b)-k-l);sprintf(g,
"<FONT COLOR=BLUE>%s</FONT>",h[j]);memcpy(b+k,g,l+24);k+=l+23;}}}}fputs(strcat(b
,"<BR>"),e);}fclose(e);fclose(f);}
>>758
自身を食わせると,アンパサンドの変換がないから元と異なるソースが出るね.
dに&と&amp;の対応入れた方が良いかな.
char d[4][5]は書き換える訳じゃないから,char *d[]で良いね.
NULL Terminateな文字列をコピーするときにmemcpy使わずにstrcpyで良いんじゃ?
string.hも#includeしてることだし.
ぱっと見たところでこれだけ発見.けど7行への道のりは遠い……
760755:03/02/21 17:15
EOF検出が甘かったので修正。
hoge hoge.c > hoge.html

#include <stdio.h>
char*strdup(char*),*s="<font color=",*e="</font>",t[999],*p,*w[999],**q;int(*f)
(const char*,...),d;FILE*i,*k;g(){return fgetc(i);}h(int*c,int x){return(*c=g()
)-EOF?*c-x:0;}main(int c,char**v){i=fopen(v[1],"rt");k=fopen("keyword.txt","r")
;f=printf;q=w;while(fscanf(k,"%s",t)-EOF)*q++=strdup(t);*q=0;f("<html><body><p\
re>");while(h(&c,0)){if(isalpha(c)||c==95){p=t;*p++=c;while(isalnum(c=g())||c==
95)*p++=c;ungetc(c,i);*p=0;q=w;while(*q){if(!strcmp(t,*q))break;q++;};if(*q)f(
"%sred>%s%s",s,t,e);else f(t);}else if(c==47){if((c=g())==42){f("%steal>/",s);
do{a(c);while(h(&c,42))a(c);a(c);}while(h(&c,47));a(c);f("%s",e);}else if(c==47
){f("%steal>//",s);while(h(&c,10))a(c);f("%s\n",e);}else{a(47);ungetc(c,i);}}
else if(c==34||c==39){f("%sblue>%c",s,c);while(h(&d,c))a(d);f("%c%s",c,e);}else
a(c);}f("</pre></body></html>");return 0;}void a(int x){switch(x){case 38:f(
"&amp;");break;case 60:f("&lt;");break;case 62:f("&gt;");break;default:f("%c",x
);case 0:;}}
761752:03/02/21 18:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *d[]={"<","&lt;",">","&gt;", "&", "&amp;", "\\\"","\\\""};
void main(int c,char**v){char h[256][256],b[1024],g[256],*o;int i=0,j,l,m,p,q,r;
FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)){fgets(h[i],256,f);j=strlen(h
[i]);if(h[i][j-1]==10){h[i][j-1]=0;}i++;}fclose(f);f=fopen(v[1],"r");e=fopen(
strcat(v[1],".html"),"w");fputs("<HTML><BODY>",e);while(!feof(f)){memset(b,0,
1024);fgets(b,1024,f);m=p=0;o=b;while(o-b<strlen(b)){q=0;for(l=0;l<4;l++){r=
strlen(d[l*2]);if(memcmp(o,d[l*2],r)==0){fputs(d[l*2+1],e);j=strlen(d[l*2+1]);o
+=r;q=1;}}if(p==0){if(*o==0x22){if(m==0){fputs("<FONT COLOR=#808080>\"",e);}else
{fputs("\"</FONT>",e);}o++;q=1;m=~m;}}if(m==0){if(memcmp(o,"/*",2)==0){fputs(
"<FONT COLOR=GREEN>/*",e);o+=2;p=q=1;}if((memcmp(o,"*/",2)==0)&&(p==1)){fputs(
"*/</FONT>",e);p=0;q=1;o+=2;}if(*o==0x9){fputs("&nbsp;&nbsp;&nbsp;&nbsp;",e);o++
;q=1;}if(p==0){if(memcmp(o,"//",2)==0){sprintf(g,"<FONT COLOR=GREEN>//%s</FONT>"
,o+2);fputs(g,e);break;}for(j=0;j<i;j++){l=strlen(h[j]);if(memcmp(o,h[j],l)==0){
sprintf(g,"<FONT COLOR=BLUE>%s</FONT>",h[j]);fputs(g,e);o+=l;q=1;}}}}if(q==0){
fwrite(o,1,1,e);o++;}}fputs("<BR>",e);}fputs("</BODY></HTML>",e);fclose(e);
fclose(f);}

>>749の機能 + \"によるリテラル色付け暴走防止で
『19』行・・・根本から変えんと縮まる事は無いだろうな・・・
>>758を少し弄ってみた.
stdlib.hって必要ないですよね?
14行.fopen/fcloseが結構コスト高いなぁ
あとは&nbsp;の連続とか,keywords.txtとか...
キーワードの判定と1行コメントの判定がまとめれればもう少し縮むかな.
sprintfのintが色が変わるのを直そうとするとこれもコスト高いです.
ctype.hインクルードしてctype使うか!(k&&((t=*(b+k-1))?'a'<=t&&t<='z'||'A'<=t&&t<='Z':0))とするか……
#include <stdio.h>
#include <string.h>
*d[]={"<","&lt;",">","&gt;","&","&amp;","\t","&nbsp;&nbsp;&nbsp;&nbsp;"};size_t
(*o)(const char*)=strlen;p(char*b,int l,int f){char s[512];sprintf(s,"<font co\
lor=%s>",f?"GREEN":"BLUE");strcat(strncat(s,b,l),"</font>");memmove(b+o(s)-l,b,
o(b));memcpy(b,s,o(s));return o(s)-1;}main(int c,char**v){char h[256][256],b[
1024];int i=-1,j,k,l,m;FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)){
fgets(h[++i],256,f);j=o(h[i])-1;h[i][j]==10?h[i][j]=0:0;}fclose(f);f=fopen(v[1]
,"r");e=fopen(strcat(v[1],".html"),"w");while(!feof(f)){memset(b,0,1024);fgets(
b,1024,f);m=1;for(k=0;k<o(b);k++){for(l=0;l<4;l++)if(b[k]==*d[l*2]){j=o(d[l*2+1
]);memmove(b+k+j-1,b+k,o(b)-k);memcpy(b+k,d[l*2+1],j);k+=j;}if(b[k]==34?m=!m:m)
if(memcmp(b+k,"//",2)==0){p(b+k,o(b+k),1);break;}for(j=0;j<i;j++)!memcmp(b+k,h[
j],l=o(h[j]))?k+=l+p(b+k,l,0):0;}fputs(strcat(b,"<BR>"),e);}fclose(e);fclose(f)
;}
>>762
ctype使うかってなんだ...
isalphaのまちがいでふ.
しかも752にアップデートされてるし……
764755:03/02/21 19:15
760を圧縮。12行

#include <stdio.h>
char*strdup(char*),*s="<font color=",*e="</font>",t[999],*p,*w[999],**q;int(*f)
(const char*,...),d;FILE*i,*k;g(){return fgetc(i);}h(int x){return(d=g())-EOF?d
-x:0;}void a(){d-60?d-62?d-38?f("%c",d):f("&amp;"):f("&gt;"):f("&lt;");}main(
int c,char**v){i=fopen(v[1],"rt");k=fopen("keyword.txt","r");f=printf;for(q=w;
fscanf(k,"%s",t)-EOF;)*q++=strdup(t);*q=0;for(f("<html><body><pre>");h(0);){if(
isalpha(d)||d==95){p=t;for(*p++=d;isalnum(h(0))||d==95;)*p++=d;*p=0;for(q=w;*q?
strcmp(t,*q++):0;);*q?f("%sred>%s%s",s,t,e):f(t);ungetc(d,i);}else if(d==47){if
(h(0)==42){f("%steal>/",s);do{for(a();h(42);a());a();}while(h(47));f("/%s",e);}
else if(d==47){for(f("%steal>//",s);h(10);)a();f("%s\n",e);}else f("/",ungetc(d
,i));}else if(d-34&&d-39)a();else{c=d;for(f("%sblue>%c",s,d);h(c);)a();f("%c%s"
,c,e);}}f("</pre></body></html>");return 0;}

>>762-763
その方法だと「_」が拾えない罠。「_cprintf」とか「g_print」とか。
>>764
そ,そうですね.
さらに数字も拾えないですね.str2intとか.
ついでにintegerでも色変わりますね.鬱.
HTMLの部分も不正だけど(藁
<body><pre>〜
だけで閉じタグ無くても良くないか?

あと、投稿の時は&を&amp;と表記すると良い。
&amp;(&) &gt;(>) &lt;(<)

<font color=#RRGGBB> 〜 <font>
           を
<a style=color:#RGB> 〜 </a>
としたら減らない?
767755:03/02/21 20:03
764だと最後のキーワードが読めなかった……
ついでに微修正

#include <stdio.h>
char*strdup(const char*),*s="<font color=",*e="</font>",t[999],*p,*w[999],**q;
int(*f)(const char*,...),d;FILE*i,*k;g(){return fgetc(i);}h(int x){return(d=g()
)-EOF?d-x:0;}void a(){d-60?d-62?d-38?f("%c",d):f("&amp;"):f("&gt;"):f("&lt;");}
main(int c,char**v){i=fopen(v[1],"r");k=fopen("keyword.txt","r");f=printf;for(q
=w;fscanf(k,"%s",t)-EOF;)*q++=strdup(t);*q=0;for(f("<html><body><pre>");h(0);){
if(isalpha(d)||d==95){p=t;for(*p++=d;isalnum(h(0))||d==95;)*p++=d;*p=0;for(q=w;
*q?strcmp(t,*q):0;q++;);*q?f("%sred>%s%s",s,t,e):f(t);ungetc(d,i);}else if(d==4
7){if(h(0)==42){f("%steal>/",s);do{for(a();h(42);a());a();}while(h(47));f("/%s"
,e);}else if(d==47){for(f("%steal>//",s);h(10);)a();f("%s\n",e);}else f("/",
ungetc(d,i));}else if(d-34&&d-39)a();else{for(f("%sblue>%c",s,c=d);h(c);)a();f(
"%c%s",c,e);}}f("</pre></body></html>");return 0;}
sage間違えた撃つ。隣を押していたよ。

後半の部分、 <font> -> </font>だった。
これでも3文字減るはず。
色表記の組み合わせが 256^3 から 16^3 になるけど問題ないはず。

…#RRGGBB表記じゃなくて 'red' だったのか。
ゴメン、後者だとむしろ一文字増える。
スマン
>>768
*sにあらかじめ # まで入れといたら、
1文字くらいの節約になるか。
red teal blue 三色あるから。
770752:03/02/21 20:32
#include <stdio.h>
#include <string.h>
char *d[]={"<","&lt;",">","&gt;", "&", "&amp;","\\\\","\\\\","\\\"","\\\"","\t",
"&nbsp;&nbsp;&nbsp;&nbsp;"," ","&nbsp;"};void main(int c,char**v){char h[256]
[256],b[1024],g[256],*o;int i=0,j,l,m,p,q,r;FILE *e,*f=fopen("keyword.txt","r");
while(!feof(f)){fgets(h[i],256,f);j=strlen(h[i]);if(h[i][j-1]==10){h[i][j-1]=0;}
i++;}fclose(f);f=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w");fputs("<HTML"
"><BODY>",e);p=0;while(!feof(f)){memset(b,0,1024);fgets(b,1024,f);m=0;o=b;while(
o-b<strlen(b)){q=0;for(l=0;l<7;l++){r=strlen(d[l*2]);if(memcmp(o,d[l*2],r)==0){
fputs(d[l*2+1],e);j=strlen(d[l*2+1]);o+=r;q=1;}}if(!m){if(memcmp(o,"/*",2)==0){
fputs("<FONT COLOR=GREEN>/*",e);o+=2;p=q=1;}if(memcmp(o,"*/",2)==0){fputs("*/</"
"FONT>",e);p=0;q=1;o+=2;}}if(!p){if(*o==0x22){if(!m){fputs("<FONT COLOR=#808080"
">\"",e);}else{fputs("\"</FONT>",e);}o++;q=1;m=~m;}if(!m){if(memcmp(o,"//",2)==0
){fputs("<FONT COLOR=GREEN>",e);p=2;}else{for(j=0;j<i;j++){l=strlen(h[j]);if(
memcmp(o,h[j],l)==0){sprintf(g,"<FONT COLOR=BLUE>%s</FONT>",h[j]);fputs(g,e);o+=
l;q=1;}}}}}if(!q){fwrite(o,1,1,e);o++;}}if(p==2){fputs("</FONT>",e);p=0;}fputs(
"<BR>",e);}fputs("</BODY></HTML>",e);fclose(e);fclose(f);}

がんがっても2行しか減らなかった・・・(;´Д⊂`
>>770
「&nbsp;&nbsp;&nbsp;&nbsp;」のようなとき、
実態参照の後にスペースがあるなどの場合は;を省略できるから
「&nbsp&nbsp&nbsp&nbsp;」でOK。
# これで3文字

<html></body></html>も無くてもいいだろう。
# 23文字くらいか
本当はあまり良くないけど、7行のためだ、テトリスだってタグを省略してたし。
つーかなんで7行なの?
773755:03/02/21 22:00
766、771の通りタグ減らしてみた。
1行しか減らなかったけど。

#include <stdio.h>
int(*f)(const char*,...),d;FILE*i,*k;char*strdup(const char*),*s="<font color="
,*e="</font>",t[999],*p,*w[999],**q;void a(){d-60?d-62?d-38?f("%c",d):f("&amp;"
):f("&gt;"):f("&lt;");}h(int x){return(d=fgetc(i))-EOF?d-x:0;}main(int c,char**
v){i=fopen(v[1],"r");k=fopen("keyword.txt","r");f=printf;for(q=w;fscanf(k,"%s",
t)-EOF;)*q++=strdup(t);*q=0;for(f("<body><pre>");h(0);)if(isalpha(d)||d==95){p=
t;for(*p++=d;isalnum(h(0))||d==95;)*p++=d;*p=0;for(q=w;*q?strcmp(t,*q):0;q++);*
q?f("%sred>%s%s",s,t,e):f(t);ungetc(d,i);}else if(d==47){if(h(0)==42){f("%stea\
l>/",s);do{for(a();h(42);a());a();}while(h(47));f("/%s",e);}else if(d==47){for(
f("%steal>//",s);h(10);)a();f("%s\n",e);}else f("/",ungetc(d,i));}else if(d-34
&&d-39)a();else{for(f("%sblue>%c",s,c=d);h(c);)a();f("%c%s",c,e);};return 0;}

>>772
http://pc3.2ch.net/tech/kako/984/984182993.html
>>767
isalphaとisalnumはctype.h,strcmpはstring.hの定義だよぉ
775755:03/02/21 22:10
>>774
strcmpは使ってない(strdupはプロトタイプ書いてある)
isalpha/isalnumは返り値がintだから書いてない。
コンパイラによっては警告出るかもしれないけど。
767がエラーになるはコピペミスです。スマソ。
776755:03/02/21 22:12
>>775
strcmp使ってるし……
これも返り値intだから書いてないだけ……
777752:03/02/21 22:37
#include <stdio.h>
#include <string.h>
char*d[]={"<","&lt;",">","&gt;", "&", "&amp;","\\\\","\\\\","\\\"","\\\"","\t",
"&nbsp&nbsp&nbsp&nbsp;"," ","&nbsp;","<FONT COLOR="};void main(int c,char**v){
char h[256][256],b[1024],g[256],*o;int i=0,j,l,m,p=0,q,r;FILE *e,*f=fopen("keyw"
"ord.txt","r");while(!feof(f)){fgets(h[i],256,f);j=strlen(h[i]);if(h[i][j-1]==10
){h[i][j-1]=0;}i++;}fclose(f);f=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w"
);while(!feof(f)){memset(b,0,1024);fgets(b,1024,f);m=0;o=b;while(o-b<strlen(b)){
q=0;for(l=0;l<7;l++){r=strlen(d[l*2]);if(memcmp(o,d[l*2],r)==0){fputs(d[l*2+1],e
);j=strlen(d[l*2+1]);o+=r;q=1;}}if(!m){if(memcmp(o,"/*",2)==0){fprintf(e,"%sGRE"
"EN>/*",d[14]);o+=2;p=q=1;}if(memcmp(o,"*/",2)==0){fputs("*/</FONT>",e);p=0;q=1;
o+=2;}}if(!p){if(*o==0x22){if(!m){fprintf(e,"%sRED>\"",d[14]);}else{fputs("\"</"
"FONT>",e);}o++;q=1;m=~m;}if(!m){if(memcmp(o,"//",2)==0){fprintf(e,"%sGREEN>",d[
14]);p=2;}else{for(j=0;j<i;j++){l=strlen(h[j]);if(memcmp(o,h[j],l)==0){sprintf(g
,"%sBLUE>%s</FONT>",d[14],h[j]);fputs(g,e);o+=l;q=1;}}}}}if(!q){fwrite(o,1,1,e);
o++;}}if(p==2){fputs("</FONT>",e);p=0;}fputs("<BR>",e);}fclose(e);fclose(f);}

文字数食ってるのを統一 →("<FONT COLOR=")&766,771氏の指摘部分修正
1行分削減
>>777 7行スレふぃーばー!
memcmp,fclose,fputs,fprintfなどを関数ポインタにしてみたら?
779752:03/02/21 23:18
>関数ポインタに変えた結果
memcmp - 10字程減少
fclose - 10字程増加
fputs - 15字程減少
fprintf - (以下略

後30字程減少できたら1行削減なのに届かない・・・
780752:03/02/21 23:30
#include <stdio.h>
#include <string.h>
int(*s)(const void*,const void*,size_t)=memcmp,(*t)(const char*,FILE*)=fputs;
char*d[]={"<","&lt;",">","&gt;","&","&amp;","\\\\","\\\\","\\\"","\\\"","\t",
"&nbsp;","&nbsp&nbsp&nbsp;"," ","&nbsp;","<FONT COLOR="};void main(int c,char**v
){char h[256][256],b[1024],g[256],*o;int i=0,j,l,m,p=0,q,r;FILE *e,*f=fopen("ke"
"yword.txt","r");while(!feof(f)){fgets(h[i],256,f);j=strlen(h[i]);if(h[i][j-1]==
10){h[i][j-1]=0;}i++;}fclose(f);f=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),
"w");while(!feof(f)){memset(b,0,1024);fgets(b,1024,f);m=0;o=b;while(o-b<strlen(b
)){q=0;for(l=0;l<7;l++){r=strlen(d[l*2]);if(s(o,d[l*2],r)==0){t(d[l*2+1],e);j=
strlen(d[l*2+1]);o+=r;q=1;}}if(!m){if(s(o,"/*",2)==0){fprintf(e,"%sGREEN>/*",d[
15]);o+=2;p=q=1;}if(s(o,"*/",2)==0){t("*/</FONT>",e);p=0;q=1;o+=2;}}if(!p){if(*o
==0x22){if(!m){fprintf(e,"%sRED>\"",d[15]);}else{t("\"</FONT>",e);}o++;q=1;m=~m;
}if(!m){if(s(o,"//",2)==0){fprintf(e,"%sGREEN>",d[15]);p=2;}else{for(j=0;j<i;j++
){l=strlen(h[j]);if(s(o,h[j],l)==0){sprintf(g,"%sBLUE>%s</FONT>",d[15],h[j]);t(g,
e);o+=l;q=1;}}}}}if(!q){fwrite(o,1,1,e);o++;}}if(p==2){t("</FONT>",e);p=0;}t("<B"
"R>",e);}fclose(e);fclose(f);}
781749:03/02/21 23:58
半分冗談で書いたんだがw、すげーな、もまいら。
7行すれなんだからダメなんだろうけど、そこまで圧縮できただけでも
すごいよ。まじで。
>>780
そもそもプログラム末のfcloseはいらないのでは?
あと、文字列リテラルchar *d[]={"1...","2...", ...};は、まとめちゃって、
char *d="1...\02...\..."; にして、d+0,d+?, ... でアクセスしたら?
あと、それに\"</font>も加えると。d+x, d+x+2で\"を入れるか入れないか選択可。
あと細かいけど、
char h[256][256],b[1024],g[256],*o;

char*o,h[256][256],b[1024],g[256];

aaa;while(xxx){yyy;zzz;}

for(aaa;xxx;zzz)yyy;
>>780
・==0は(基本的に)不要
・グローバルなint n=999を用意し、配列のサイズは全部nに統一
・可能な限りローカル変数グローバルにする。それぞれにint等書く分と、
場合によっては=0の初期化分が稼げる。関数呼び出しがネストしなければ、
引数と返り値もグローバルにしたほうがちぢむ可能性あり(callの出現回数による)。

キレイすぎ。元からもっと縮められるはず。
つーか、void main(...) のあたりでいやソな感じ
786752:03/02/22 02:08
#include <stdio.h>
#include <string.h>
int(*s)(const void*,const void*,size_t)=memcmp,(*t)(const char*,FILE*)=fputs,i=
0,j,l,m,q,p=0,r,w;char*d="<\0<\0>\0>\0&\0&\0\\\\\0\\\\\0\\\"\0\\\"\0"
"\t\0    \0 \0 \0<FONT COLOR=",*o,h[256][256],b[1024],g
[256];main(int c,char**v){FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)){
fgets(h[i],256,f);j=strlen(h[i]);if(h[i][j-1]==10){h[i][j-1]=0;}i++;}fclose(f);f
=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w");while(!feof(f)){memset(b,0,
1024);fgets(b,1024,f);m=0;o=b;while(o-b<strlen(b)){q=w=0;for(l=0;l<7;l++){r=
strlen(d+w);if(!s(o,d+w,r)){t(d+w,e);o+=r;q=1;}w+=strlen(d+w)+1;}if(!m){if(!s(o,
"/*",2)){fprintf(e,"%sGREEN>/*",d+67);o+=2;p=q=1;}if(s(o,"*/",2)==0){t("*/</FON"
"T>",e);p=0;q=1;o+=2;}}if(!p){if(*o==0x22){if(!m){fprintf(e,"%sRED>\"",d+67);}
else{t("\"</FONT>",e);}o++;q=1;m=~m;}if(!m){if(!s(o,"//",2)){fprintf(e,"%sGREEN"
">",d+67);p=2;}else{for(j=0;j<i;j++){l=strlen(h[j]);if(!s(o,h[j],l)){sprintf(g,
"%sBLUE>%s</FONT>",d+67,h[j]);t(g,e);o+=l;q=1;}}}}}if(!q){fwrite(o,1,1,e);o++;}}
if(p==2){t("</FONT>",e);p=0;}t("<BR>",e);}}

17→16行に縮まりますた
783,784氏thx!
787752:03/02/22 02:10
をっと・・&を全角にするのを忘れていた・・・
#include <stdio.h>
#include <string.h>
int(*s)(const void*,const void*,size_t)=memcmp,(*t)(const char*,FILE*)=fputs,i=
0,j,l,m,q,p=0,r,w;char*d="<\0&lt;\0>\0&gt;\0&\0&amp;\0\\\\\0\\\\\0\\\"\0\\\"\0"
"\t\0&nbsp&nbsp&nbsp&nbsp;\0 \0&nbsp;\0<FONT COLOR=",*o,h[256][256],b[1024],g
[256];main(int c,char**v){FILE *e,*f=fopen("keyword.txt","r");while(!feof(f)){
fgets(h[i],256,f);j=strlen(h[i]);if(h[i][j-1]==10){h[i][j-1]=0;}i++;}fclose(f);f
=fopen(v[1],"r");e=fopen(strcat(v[1],".html"),"w");while(!feof(f)){memset(b,0,
1024);fgets(b,1024,f);m=0;o=b;while(o-b<strlen(b)){q=w=0;for(l=0;l<7;l++){r=
strlen(d+w);if(!s(o,d+w,r)){t(d+w,e);o+=r;q=1;}w+=strlen(d+w)+1;}if(!m){if(!s(o,
"/*",2)){fprintf(e,"%sGREEN>/*",d+67);o+=2;p=q=1;}if(s(o,"*/",2)==0){t("*/</FON"
"T>",e);p=0;q=1;o+=2;}}if(!p){if(*o==0x22){if(!m){fprintf(e,"%sRED>\"",d+67);}
else{t("\"</FONT>",e);}o++;q=1;m=~m;}if(!m){if(!s(o,"//",2)){fprintf(e,"%sGREEN"
">",d+67);p=2;}else{for(j=0;j<i;j++){l=strlen(h[j]);if(!s(o,h[j],l)){sprintf(g,
"%sBLUE>%s</FONT>",d+67,h[j]);t(g,e);o+=l;q=1;}}}}}if(!q){fwrite(o,1,1,e);o++;}}
if(p==2){t("</FONT>",e);p=0;}t("<BR>",e);}}
>>786
独自に>>780を縮めてみました。14行。
7行スレ特有の汚いプログラムですが、参考にしてくだちい>>752さん

バグ?:タブとスペースがnbspに変換されていない
バグ?:keyword.txtの各行の改行が0x0a,0x0dのどちらでも対応できるようにした
仕様変更:出力先をout.htmlに固定
仕様変更:b[]のサイズを999にした

#include <stdio.h>
#include <string.h>
int(*s)()=memcmp,(*t)()=fputs,i,j,l,p,q,r;char*d[]={"<","<",">",">","&",
"&","\\\\","\\\\","\\\"","\\\"","\t","    "," "," "
,"","<FONT COLOR="},*o,h[256][256],b[999],g[256];main(int m,char**v){FILE*e=
fopen("out.html","w"),*f=fopen("keyword.txt","r");for(;!feof(f);i++)for(fgets(h[
i],256,f),q=strlen(h[i]);q--;)if(*(o=h[i]+q)==10||*o==13)*o=0;for(f=fopen(v[1],
"r");!feof(f);p-2||(t("</FONT>",e),p=0),t("<BR>",e))for(memset(b,m=0,q=999),fgets
(o=b,q,f);o-b<strlen(b);q||fwrite(o++,1,1,e)){for(q=0,l=7;l--;!s(o,d[j],r=strlen
(d[j]))?t(d[j+1],e),j=strlen(d[j+1]),o+=r,q=1:0)j=l*2;if(!m)!s(o,"/*",2)?fprintf
(e,"%sGREEN>/*",d[15]),o+=2,p=q=1:0,!s(o,"*/",2)?t("*/</FONT>",e),p=0,q=1,o+=2:0
;if(!p)if(*o==34?m?t("\"</FONT>",e):fprintf(e,"%sRED>\"",d[15]),o++,q=1,m=~m:0,
!m)if(s(o,"//",2))for(j=i;j--;)!s(o,h[j],l=strlen(h[j]))?sprintf(g,"%sBLUE>%s</"
"FONT>",d[15],h[j]),t(g,e),o+=l,q=1:0;else fprintf(e,"%sGREEN>",d[15]),p=2;}}
789788:03/02/22 02:18
文字列の部分をしっぱい。

char*d[]={"<","&lt;",">","&gt;","&","&amp;","\\\\","\\\\","\\\"","\\\"","\t",
"&nbsp;&nbsp;&nbsp;&nbsp;"," ","&nbsp;","","<FONT COLOR="},*o,h[256][256],b[999],g[256];
>>773
アルゴリズムは追ってないけど。

・return(d=fgetc(i))-EOF?d-x:0;→ (d=fgetc(i))<0?0:d-x;
・fscanf(k,"%s",t)-EOF → fscanf(k,"%s",t)>=0
・void a(){d-60?d-62?d-38?f("%c",d):f("&"):f(">"):f("<");}
→ void a(){f(d-60?d-62?d-38?(f("%c",d),""):"&":">":"<");}
・*q?strcmp(t,*q):0 → *q&&strcmp(t,*q)

あとはファイル名を短い固定のものにするか、
入出力を変えるくらいですね
7行じゃなくて済みません。Java版、自分自身を表示。

class S{public static void main(String[]c){new S();}S(){while((c=h(i,2))!=1295)
{System.out.print(s.substring(c,c+h(i+2,1)));i+=3;}}int i=95,c;int h(int i,int
n){return Integer.parseInt(s.substring(i,i+n),36);}String s=" (){}[];,.?!+=12"+
"9536publiclasstaticvoidmainewhilesubstringSystemoutprintIntegereturnparseInt"+
"\n\"\\0p50011m10310k60010t60010z40011340111m11h50520p10210311630011m10120710"+
"411m10120311850110110p10d11910110o10810f10210210b10d10e40212k10311m60911s309"+
"11v50110s10911d90110p10810p10c11910110o10c10f10810e10210210210710o10c20i1071"+
"0410411x30010o10d10g20810p10711x30011910111x30010o10811x32k11610210312660012"+
"070912c80110s10911d90110o10810o10c11610210810i20210710411m11h50010s10d12l100"+
"g2l10c12k20gz1fz2e62l10c12k22m11612m12l12m12m12nz3mz2l10c12k24lz5kz6j62l10c1"+
"2k26pz7oz8n62l10c12k28tz9szar62l10c12k2axzbwzcv62l10c12k2d1ze0zez62l10c12k2f"+
"5zg4zh362l10c12k2h9w2l1071041zz0";}

>>788

最初のループの中身を次のようにしてもいいんじゃないか?
for(fgets(h[i],256,f),q=strlen(h[i]);q--;)if(*(o=h[i]+q)==10||*o==13)*o=0;

for(fgets(o=h[i],250,f);*o;o++)*o==10||*o==13?*o=0:0;
>>791
それはむしろトリッキースレだな・・・
>>791
おもしれーな
795755:03/02/22 03:49
>>790
サンクス。
キーワードファイル名を「k」にして、色々絞ってみた。10行。

#include <stdio.h>
int(*f)()=printf,d;FILE*i,*k;char*strdup(),t[99],*p,*e="</font>",*w[999],**q,*s
="<font color=",*l="%steal>/";h(int x){return(d=fgetc(i))<0?0:d-x;}a(){f(d-60?d
-62?d-38?"%c":"&amp;":"&gt;":"&lt;",d);}main(int c,char**v){i=fopen(v[1],"r");q
=w;for(k=fopen("k","r");fscanf(k,"%s",t)>0;)*q++=strdup(t);f("<body><pre>");for
(*q=0;h(0);)if(isalpha(d)|d==95){p=t;for(*p++=d;isalnum(h(0))|d==95;)*p++=d;*p=
0;for(q=w;*q&&strcmp(t,*q);q++);ungetc(d,i);f(*q?"%sred>%s%s":t,s,t,e);}else if
(d-47)if(d-34&&d-39)a();else{for(f("%sblue>%c",s,c=d);h(c);)a();f("%c%s",c,e);}
else{if(h(0)-42)if(d-47)f("/",ungetc(d,i));else{for(f(l,s),a();h(10);)a();f(
"%s\n",e);}else{f(l,s);do{for(a();h(42);a());a();}while(h(47));f("/%s",e);}};}

gccでwarning出るけど勘弁(VC++は問題なし)。
788ですが、12行まで縮めたので寝まつ。

仕様変更:入力キーワードファイルを k, 出力HTMLを o.htm に変更
仕様変更:コメントの色を GREEN から CYAN に

#include <stdio.h>
char*x="*/</FONT>",b[999],*d[]={"<","&lt;",">","&gt;","&","&amp;","\\\\","\\\\",
"\\\"","\\\"","\t","&nbsp&nbsp&nbsp&nbsp;"," ","&nbsp;","<FONT COLOR="},*o,h[256
][256];int(*t)()=fputs,memcmp(),(*s)()=memcmp,i,j,l,p,q,r;main(m,v)char**v;{FILE
*e=fopen("o.htm","w"),*f=fopen("k","r");for(;!feof(f);i++)for(fgets(o=h[i],250,
f);*o;o++)*o==10||*o==13?*o=0:0;for(f=fopen(v[1],"r");!feof(f);p-2||(p=t(x+2,e))
,t("<BR>",e))for(memset(b,m=0,q=999),fgets(o=b,q,f);o-b<strlen(b);q||fwrite(o++,
1,1,e)){for(q=0,l=7;l--;!s(o,d[j],r=strlen(d[j]))?q=!t(d[j+1],e),o+=r:0)j=l*2;if
(!m)!s(o,"/*",2)?t(d[14],e),p=q=!t("CYAN>/*",e),o+=2:0,!s(o,"*/",2)?p=t(x,e),q=1
,o+=2:0;if(!p)if(*o==34?m?t("\"</FONT>",e):(t(d[14],e),t("RED>\"",e)),o++,q=1,m=
~m:0,!m)if(s(o,"//",2))for(j=i;j--;)!s(o,h[j],l=strlen(h[j]))?t(d[14],e),t("BLU"
"E>",e),t(h[j],e),q=!t(x+2,e),o+=l:0;else t(d[14],e),t("CYAN>",e),p=2;}}
初心者質問良いですか?
こうやって行数を少なくすると実用面で良い点(処理速度とか)
があるんですか?
>>797
実用性は無い。まったく無い。七行プログラムを書い
たり、他人の書いた七行プログラムを解読することで、
プログラミングの能力がちょびっと高まることはあるか
もしれん。でもそれも副作用にしか過ぎない。できる
だけ少ない行数でできるだけ高度な機能を実装してい
るプログラムを見て驚くのが好きだからやってる。
>>797
楽しんでるだけだよ。
プログラムを楽しめるってのはいいことじゃないか。
void*memset(void*,int,unsigned int),srand(unsigned int),exit(int);int rand(),
printf(),scanf(const char*,...),(*m)()=printf;unsigned int time(unsigned int*);
char *z="?\0O\0a\0b\0c\0d\0e\0f\0g\0h\0X",a[12][12],b,c,d,e,f,g=100,h,i,l[12][12
];main(){memset(a,1,144);memset(l,0,144);srand(time(0));for(b=10;b--;){for(;;){c
=rand()%10+1;d=rand()%10+1;if(a[c][d]!=10){a[c][d]=10;for(e=-1;e<2;e++){for(f=-1
;f<2;f++){a[c+f][d+e]<10?a[c+f][d+e]++:0;}}break;}}}for(;;){for(b=10;b--;){for(c
=10;c--;m("[%s]",z+l[10-c][10-b]*2));m("\n");}a[d][e]==10?m("[GameOver]\n"),exit
(0):0;g==10?m("[Clear]\n"),exit(0):0;m("Where?(x y)");scanf("%d %d",&d,&e);l[d][
e]=a[d][e];i=1;while(i==1){i=0;for(b=1;b<11;b++){for(c=1;c<11;c++){if(l[c][b]==1
){for(h=-1;h<2;h++){a[c+h][b]!=10&&l[c+h][b]==0?l[c+h][b]=a[c+h][b],g--,i=1:0;a[
c][b+h]!=10&&l[c][b+h]==0?l[c][b+h]=a[c][b+h],g--,i=1:0;}}}}}g--;}}

('A`)・・・
>>796
&nbsp&nbsp&nbsp&nbsp;
用は半角スペースが2個以上連続していなければいいんだから、
二つ目の&nbspはハンカクスペースで置き換えられるかも。
802788:03/02/22 15:46
10行と半分。>>755 さんにはまだ追いつけない・・・

バグ?:>>786-787 を取り入れたが、アンパサンド等置換部分にバグ有りました。修正。
仕様変更:>>795 と同じように標準出力に出力
仕様変更:色 CYAN は標準16色に入っていなかったので、AQUA に変更
多謝:>>801 さん

#include <stdio.h>
int(*t)()=printf,memcmp(),(*s)()=memcmp,i,j,l,p,q,r;char*d="<\0&lt;\0>\0&gt;\0&"
"\0&amp;\0\\\\\0\\\\\0\\\"\0\\\"\0\t\0&nbsp &nbsp&nbsp;\0 \0&nbsp;",h[256][256],
*o,b[999],*x="*/</FONT>",*y="<FONT COLOR=%s";main(m,v)char**v;{FILE*f=fopen("k",
"r");for(;~(m=getc(f));)m-10&&m-13?h[i][j++]=m:(j?i++:0,j=0);j&&i++;for(f=fopen(
v[1],"r");m=!feof(f);p-2||(p=0,t(x+2)),t("<BR>"))for(fgets(o=b,999,f);o-b<strlen
(b);q||putchar(*o++)){q=j=0;for(l=14;l--;l%2&&!s(o,d+j,r)?j+=r+1,t(d+j),o+=r,q=1
:(j+=r+1))r=strlen(d+j);for(j=0;m&&j<2;j++)!s(o,j?"*/":"/*",2)?p=!j,q=1,t(j?x:y,
"AQUA>/*"),o+=2:0;if(!p)if(*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,q=1,m=!m:0,m)
if(s(o,"//",2))for(j=i;j--;)!s(o,h[j],l=strlen(h[j]))?t(y,"BLUE>"),t(h[j]),q=1,t
(x+2),o+=l:0;else t(y,"AQUA>"),p=2;}}
>>752 >>788
かなり最初のほうから、行コメントとブロックコメントの重複処理がバグっている

// aaa /* bbb */
ccc

これだと、aaa の p=2 が bbb で消されて、ccc 以降がすべて aaa の色になる。
804788:03/02/22 17:14
バグ?:致命的だったので、>>803 のバグを解決しました。
仕様変更:入力を標準入力から読み込むように変更

#include <stdio.h>
char*d="<\0&lt;\0>\0&gt;\0&\0&amp;\0\\\\\0\\\\\0\\\"\0\\\"\0\t\0&nbsp &nbsp&nbs"
"p;\0 \0&nbsp;",*o,*a,h[256][256],b[999],*x="*/</FONT>",*y="<FONT COLOR=%s";int(
*t)()=printf,memcmp(),(*s)()=memcmp,i,j,l,p,q,r;main(m){FILE*f=fopen("k","r");
for(;~(m=getc(f));)m-10&&m-13?h[i][j++]=m:(j&&i++,j=0);for(j&&i++;fgets(o=b,m=999
,stdin);q?q=!t(x+2):0,t("<BR>"))for(;a=o,o-b<strlen(b);a-o||putchar(*o++)){j=0;
for(l=14;l--;j+=r+1,l%2&&!s(o,d+j-r-1,r)?t(d+j),o+=r:0)r=strlen(d+j);for(j=0;!q
&&m&&j<2;j++)!s(o,j?"*/":"/*",2)?p=!j,t(j?x:y,"AQUA>/*"),o+=2:0;if(!p)if(*o==34?
t(m?y:"\"%s",m?"RED>\"":x+2),o++,m=!m:0,m)for(j=!s(o,"//",2)?t(y,"AQUA>"),q=1:i;
!q&&j--;)!s(o,h[j],r=strlen(h[j]))?t(y,"BLUE>"),t(h[j]),t(x+2),o+=r:0;}}
805791:03/02/22 17:18
7行にできました。Java版、自分自身を表示。

class S{public static void main(String[]a){new S();}S(){while(8463!=(c=92*h(i++
)+h(i++))){System.out.print(s.substring(c,c+h(i++)));}}int i=191,c;int h(int i)
{return s.charAt(i)-35;}String s="\\class S{public static void main(String[]a"+
"){new S();}{while(8463!=(c=92*h(i++\n)+h(i++))){System.out.print(s.substring"+
"(c,c+h(i++)));}}int i=191,c;int h(int i){return s.charAt(i)-35;}String s=\"#"+
"$W#S&#X<#qr#p$$dE##$##$#$L%)$#o%%)$#MF##$#B$#qJ%)$#o%%)$$<l##$%)$%*$%)$#o%%)"+
"$%+o%)$#o%%)$%wn%)$#V$#W$~~/* Save me to a file as 'S.java' (^_^)/ */";}

806755:03/02/22 17:58
やっと一桁……でもあと2行(死

int printf(),(*f)()=printf,d;void*fopen(),*i,*k;char*strdup(),t[99],*p,*w[999],
*e="</font>",**q=w,*s="<font color=",*l="%steal>/";h(int x){return(d=getc(i))<0
?0:d-x;}a(){f(d-60?d-62?d-38?"%c":"&amp;":"&gt;":"&lt;",d);}main(c,v)char**v;{k
=fopen("k","r");for(i=fopen(v[1],"r");fscanf(k,"%s",t)>0;)*q++=strdup(t);for(f(
"<body><pre>");h(0);)if(isalpha(d)|d==95){p=t;for(*p++=d;isalnum(h(0))|d==95;)*
p++=d;*p=0;for(q=w;*q&&strcmp(t,*q);q++);ungetc(d,i);f(*q?"%sred>%s%s":t,s,t,e)
;}else if(d-47){if(d==34|d==39){for(f("%sblue>%c",s,c=d);h(c);)a();f("%s",e);}a
();}else{if(h(0)-42)if(d-47)f("/",ungetc(d,i));else{for(f(l,s),a();h(10);)a();f
("%s\n",e);}else{f(l,s);do{for(a();h(42);a());a();}while(h(47));a();f(e);}};}
807755:03/02/22 18:33
>>806
7行目のみ修正&「'」「"」に色をつけないように仕様変更。
;}else if(d-47){if(d==34|d==39){for(f("%c%sblue>",c=d,s);h(c);)a();f("%s",e);}a
int printf(),(*m)()=printf;char*z="?\0O\0a\0b\0c\0d\0e\0f\0g\0h\0X",a[12][12],b,
c,d,e,f,g=100,i,l[12][12];main(){memset(a,1,144);memset(l,0,144);srand(time(0));
for(b=10;b--;){for(;;){c=rand()%10+1;d=rand()%10+1;if(a[c][d]<10){a[c][d]=10;for
(e=-1;e<2;e++)for(f=-1;f<2;f++)a[c+f][d+e]+=a[c+f][d+e]<10;break;}}}d=e=0;for(;;
){for(b=10;b--;m("\n"))for(c=10;c--;m(z+l[10-c][10-b]*2));a[d][e]>9||g==10?exit(
):0;scanf("%d%d",&d,&e);l[d][e]=a[d][e];for(i=1;i>0;g--){i=0;for(b=11;--b;)for(
c=11;--c;)if(l[c][b]==1)for(f=-1;f<2;f++){a[c+f][b]<10&&!l[c+f][b]?l[c+f][b]=a[c
+f][b],g--,i=2:0;a[c][b+f]<10&&!l[c][b+f]?l[c][b+f]=a[c][b+f],g--,i=1:0;}}}}

8ギョウマインスイーパ('A`)ワーニングハキニシナイ
809755:03/02/22 19:16
806-807微修正。

int printf(),(*f)()=printf,d;void*fopen(),*i,*k;char*strdup(),t[99],*p,*w[999],
*e="</font>",**q=w,*s="<font color=",*l="%steal>/";h(int x){return(d=getc(i))<0
?0:d-x;}a(){f(d-60?d-62?d-38?"%c":"&amp;":"&gt;":"&lt;",d);}main(c,v)char**v;{k
=fopen("k","r");for(i=fopen(v[1],"r");fscanf(k,"%s",t)>0;)*q++=strdup(t);for(f(
"<body><pre>");h(0);)if(isalpha(d)|d==95){p=t;for(*p++=d;isalnum(h(0))|d==95;)*
p++=d;*p=0;for(q=w;*q&&strcmp(t,*q);q++);ungetc(d,i);f(*q?"%sred>%s%s":t,s,t,e)
;}else if(d-47){if(d==34|d==39){for(f("%c%sblue>",c=d,s);h(c);)a();f(e);}a();}
else{if(h(0)-42)if(d-47)f("/",ungetc(d,i));else{for(f(l,s),a();h(10);)a();f(e);
a();}else{f(l,s);do{for(a();h(42);a());a();}while(h(47));a();f(e);}};}
>>808
char a[12][12],b,c,d,e,f,g=100,i,l[12][12];main(){memset(a,1,144);memset(l,0,144
);srand(time(0));for(b=10;b--;)for(;;){c=rand()%10+1;d=rand()%10+1;if(a[c][d]<11
){a[c][d]=11;for(e=2;1+e--;)for(f=2;1+f--;)a[c+f][d+e]+=a[c+f][d+e]<10;break;}};
for(d=e=0;;g-=1-l[d][e]>0){for(b=10;b--;printf("\n"))for(c=10;c--;putchar(l[10-c
][10-b]+47));l[d][e]>10||g<11?exit():0;scanf("%d%d",&d,&e);l[d][e]=a[d][e];for(i
=1;i>0;){i=0;for(b=11;--b;)for(c=11;--c;)if(l[c][b]==1)for(f=2;1+f--;){a[c+f][b]
<10&&l[c+f][b]==0?l[c+f][b]=a[c+f][b],g-=11>(c+f)&&(c+f)>0,i=1:0;a[c][b+f]<10&&l
[c][b+f]==0?l[c][b+f]=a[c][b+f],g-=11>(b+f)&&(b+f)>0,i=1:0;}}}}
マインスイーパってpart1にもあったよね?
char*a="123456789TJQK",*b="HDCS?",c[53],d[9],e[9],l[9];int f,g,h,i,j,printf(),(
*k)()=printf,y,z;o(char*v,int w,int*x){while(c[v[w]=rand()%52]);x[0]+=v[w]%13>9?
10:v[w]%13+1;c[v[w]]=1;}p(char*v,int w){for(g=w;g--;){printf("%c%c",*(b+v[g]/13)
,*(a+v[g]%13));}putchar(10);}main(){srand(time(0));memset(c,0,52);memset(l,52,9)
;j=y=z=0;for(g=h=i=2;g--;){o(d,g,&y);o(e,g,&z);}for(;;){k("en:");p(j?e:l,h);k(
"me:");p(d,i);y>21?k("lost"),exit():0;z>21?k("win"),exit():0;if(j){y>z?k("win"):
0;y==z?k("draw"):0;y<z?k("lost"):0;exit();}k("cmd?");scanf("%d",&g);switch(g){
case 0:o(d,i++,&y);break;case 1:j=1;}if(z<15+rand()%5){o(e,h++,&z);j=z>21;}}}

8行BJ
cmd 0:カードを引く 1:勝負
813788:03/02/23 02:49
今日はここまで・・・また>>755さんが遠くへ・・・

#include <stdio.h>
char*o,*a,h[256][999],*x="*/</FONT>",*y="<FONT COLOR=%s";int(*t)()=printf,memcmp
(),(*s)()=memcmp,i=1,j,p,q,r;main(m){FILE*f=fopen("k","r");for(;~(m=getc(f));)m-
10&&m-13?h[i][j++]=m:(j&&i++,j=0);for(j&&i++;fgets(o=*h,m=999,stdin);q=q&&!t(x+2
),t("<BR>"))for(;*(a=o);o++){for(j=0;!q*m&&j<2;j++)!s(o,j?"*/":"/*",2)?p=!j,t(j?
x:y,"AQUA>/*"),o+=2:0;if(!p)if(*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,m=!m:0,m)
for(j=!s(o,"//",2)?q=t(y,"AQUA>"):i;!q&&--j;)!s(o,h[j],r=strlen(h[j]))?t(y,"BLU"
"E>"),t(h[j]),t(x+2),o+=r:0;*o==92?t(*++o-34?*o-92?o-=2,"":"\\\\":"\\\""),o++:0;
t(*o-32?*o-60?*o-38?*o-9?a-o?o--,"":"%c":"&nbsp &nbsp&nbsp;":"&amp;":"&lt;":"&n"
"bsp;",*o);}}
814755:03/02/23 12:27
ソース標準入力&コメントは/*〜*/のみ(ANSI C)&
>>749の必須項目でない'〜'/"〜"の機能削除してやっと7行……

int printf(),(*f)()=printf,c,d;void*fopen(),*k;char*strdup(),t[99],*p,*w[999],*
*q=w,*s="<font color=",*e="</font>";h(x){return(d=getchar())<0?0:d-x;}a(){f(d-
60?d-62?d-38?"%c":"&amp;":"&gt;":"&lt;",d);}main(){for(k=fopen("k","r");fscanf(
k,"%s",t)>0;)*q++=strdup(t);for(f("<body><pre>",h(0));d>0;)if(isalpha(d)|d==95)
{p=t;for(*p++=d;isalnum(h(0))|d==95;)*p++=d;*p=0;for(q=w;*q&&strcmp(t,*q);q++);
f(*q?"%sred>%s%s":t,s,t,e);}else if(d-47)a(),h(0);else{if(h(0)-42)f("/");else{f
("%steal>/",s);do{for(a();h(42);a());a();}while(h(47));a();f(e);h(0);}};}

実用性はかなり落ちるけど、とりあえず7行の範囲ってことで。
815755:03/02/23 13:13
ちなみに809の機能でソース標準入力にして8行半。

int printf(),(*f)()=printf,c,d;void*fopen(),*k;char*strdup(),t[99],*p,*w[999],*
*q=w,*s="<font color=",*l="%steal>/",*e="</font>";h(x){return(d=getchar())<0?0:
d-x;}a(){f(d-60?d-62?d-38?"%c":"&amp;":"&gt;":"&lt;",d);}main(){for(k=fopen("k"
,"r");fscanf(k,"%s",t)>0;)*q++=strdup(t);for(f("<body><pre>",h(0));d>0;)if(d==
95|isalpha(d)){p=t;for(*p++=d;isalnum(h(0))|d==95;)*p++=d;*p=0;for(q=w;*q&&
strcmp(t,*q);q++);f(*q?"%sred>%s%s":t,s,t,e);}else if(d-47){if(d==34|d==39){for
(f("%c%sblue>",c=d,s);h(c);)a();f(e);}a();h(0);}else{if(h(0)-42)if(d-47)f("/");
else{for(f(l,s),a();h(10);)a();f(e);a();h(0);}else{f(l,s);do{for(a();h(42);a())
;a();}while(h(47));a();f(e);h(0);}};}
>>812
char*a="123456789TJQK",*b="HDCS?W\0L",c[53],d[9],e[9],l[9];int printf(),f,g,h,i,
j,(*k)()=printf,y,z;o(char*v,int w,int*x){while(c[v[w]=rand()%52]);*x+=v[w]%13>9
?10:v[w]%13+1;c[v[w]]=1;}p(char*v,int w){for(g=w;g--;)k("%c%c",*(b+v[g]/13),*(a+
v[g]%13));k("\n");}main(){srand(time(0));memset(l,52,9);memset(c,0,52);j=y=z=0;
for(g=h=i=2;g--;){o(d,g,&y);o(e,g,&z);}for(;;){k("e");p(j?e:l,h);k("m");p(d,i);y
>21?k(b+7),exit():0;z>21?k(b+5),exit():0;if(j){y>z?k(b+5):y<z?k(b+7):k("D");exit
();}scanf("%d",&g);g>0?j=1:o(d,i++,&y);z<15+rand()%5?o(e,h++,&z),j=z>21:0;}}

8行→7行
randomize:v=639:w=479:*a:c+:stick k,15:if k&1{x-=4}:if k&2{y-=4}if k&4:x+=4
if k&8{y+=4}:if x<0{x=0}:if x>639{x-=4}::if x<v{s-}else{s+}:if s>5{s-}:cls
if s<-5{s+}:if y<0{y=0}:if y>479{y-=4}:if y<w{t-}else{t+}:if t>5{t-}:if t<-5:t+
v+=s:w+=t:if v<0{v=0}:if v>636{v=636}:if w<0{w=0}:if w>476{w=476}:color 255
pset v,w:color:pset x,y:if ((v-x)*(v-x))+((w-y)*(w-y))>99{wait 6:rnd r,30
if c>10000{dialog "clear":end}:if r=0{s=0:t=0}:goto *a}:dialog "score = "+c

黒い点(初期左上隅)を操作して赤点(初期左下隅)から逃げつづける。
操作はキーボードの←↑→↓で。ちなみにハイスコア530
>815を乱暴に圧縮してみるテスツ

int printf(),(*f)()=printf,c,d;char*k,*p,t[99],*w[999],**q=w,*s="<font color=",*
l="%steal>/",*e="</font>";h(x){return(d=getchar())<0?0:d-x;}a(){f(d-60?d-62?d-38
?"%c":"&amp;":"&gt;":"&lt;",d);}main(){for(k=fopen("k","r");fscanf(k,"%s",t)>0;)
*q++=strdup(t);for(f("<body>",h(0));d>0;)if(d==95|isalpha(d)){p=t;for(*p++=d;
isalnum(h(0))|d==95;)*p++=d;*p=0;for(q=w;*q&&strcmp(t,*q);q++);f(*q?"%sred>%s%s"
:t,s,t,e);}else if(d-47){if(d==34|d==39){for(f("%c%sblue>",c=d,s);h(c);)a();f(e)
;}a();h(0);}else{if(h(0)-42)if(d-47)f("/");else{for(f(l,s),a();h(10);)a();f(e);a
();h(0);}else{f(l,s);do{for(a();h(42);a());a();}while(h(47));a();f(e);h(0);}};}
819755:03/02/23 22:11
>>818
int以外のプロトタイプ無くすのはともかく
<pre>無くすと<br>とか&nbsp;とか要るから

a(){f(d-9?d-10?d-32?d-60?d-62?d-38?"%c":"&amp;":"&gt;":"&lt;":"&nbsp;":"<br>":
"&nbsp &nbsp&nbsp;",d);}

とかになってむしろ長くなるかと。
>>818

int*k,printf(),(*f)()=printf,c,d;char*p,t[99],*w[999],**q=w,*s="<font color=",*l
="%steal>/",*e="</font>";h(x){return(d=getchar())<0?0:d-x;}a(){f(d-60?d-62?d-38?
"%c":"&":">":"<",d);}main(){for(k=fopen("k","r");fscanf(k,"%s",t)>0;)*
q++=strdup(t);for(f("<pre>",h(0));d>0;)if(d==95|isalpha(d)){p=t;for(*p++=d;
isalnum(h(0))|d==95;)*p++=d;*p=0;for(q=w;*q&&strcmp(t,*q);q++);f(*q?"%sred>%s%s"
:t,s,t,e);}else if(d-47){if(d==34|d==39){for(f("%c%sblue>",c=d,s);h(c);)a();f(e)
;}a();h(0);}else{if(h(0)-42)if(d-47)f("/");else{for(f(l,s),a();h(10);)a();f(e);a
();h(0);}else{f(l,s);do{for(a();h(42);a());a();}while(h(47));a();f(e);h(0);}};}
>>820
int*k,printf(),(*f)()=printf,c,d;char*p,t[99],*w[999],**q=w,*s="<font color=",*l
="%steal>/",*e="</font>";h(x){return(d=getchar())<0?0:d-x;}a(){f(d-60?d-62?d-38?
"%c":"&amp;":"&gt;":"&lt;",d);}main(){for(k=fopen("k","r");fscanf(k,"%s",t)>0;)*
q++=strdup(t);for(f("<pre>",h(0));d>0;)if(d==95|isalpha(d)){p=t;for(*p++=d;
isalnum(h(0))|d==95;)*p++=d;*p=0;for(q=w;*q&&strcmp(t,*q);q++);f(*q?"%sred>%s%s"
:t,s,t,e);}else if(d-47){if(d==34|d==39){for(f("%c%sblue>",c=d,s);h(c);)a();f(e)
;}a();h(0);}else{if(h(0)-42)if(d-47)f("/");else{for(f(l,s),a();h(10);)a();f(e);a
();h(0);}else{f(l,s);do{for(a();h(42);a());a();}while(h(47));a();f(e);h(0);}};}
o(x){for(;h(x);)a();}を新設しfor(AAA();h(c);)a();→AAA(),o(c);とする
このパターンのforが3箇所あるのでトータルでは削れる
場所によっては{for(AAA();h(c);)a();BBB();}→AAA(),o(c),BBB();と{}を省略可能かと
ついでに一部のif()elseが3項演算子に出来るかもしれず

ちなみに検証はしてない(w
>>815 &その他
p=t;for(*p++=d;isalnum(h(0))|d==95;)*p++=d;*p=0;

ungetc(d,i);fscanf(i,"%[0-9a-zA-Z_]",t);
に。たぶん*pは未使用になる。
824755:03/02/24 16:44
>>820-823
色々取り入れてついでに警告抑制してみた。

int w[999],*q=w,k,printf(),(*f)()=printf,c,d;char*e="</font>",*l="%steal>/",*s=
"<font color=",t[99];a(){f(d-60?d-62?d-38?"%c":"&amp;":"&gt;":"&lt;",d);}h(x){
return(d=getchar())<0?0:d-x;}o(x){for(;h(x);)a();}main(){for(k=fopen("k","r");
fscanf(k,"%s",t)>0;)*q++=strdup(t);for(f("<pre>",h(0));d>0;)if(d==95|isalpha(d)
){*t=d;t[1]=0;h(scanf("%[0-9a-zA-Z_]",t+1));for(q=w;*q&&strcmp(t,*q);q++);f(*q?
"%sred>%s%s":t,s,t,e);}else if(d-47){d==34|d==39?f("%c%sblue>",c=d,s),o(c),f(e)
:0;a();h(0);}else{if(h(0)-42)d-47?f("/"):f(l,s),a(),o(10),a(),h(f(e));else{f(l,
s);do a(),o(42),a();while(h(47));a();h(f(e));}};}
>>813
//コメントの機能削除,getsを使用,stdio.h削除して7行

int printf(),(*t)()=printf,memcmp(),(*s)()=memcmp,i=1,j,p,q,r,f;char*o,*a,g[99],
h[999],*x="*/</FONT>",*y="<FONT COLOR=%s";main(m){f=fopen("k","r");for(t("<pre>"
);m=gets(o=h);)for(;*(a=o);o++){for(j=0;m&&j<2;j++)!s(o,j?"*/":"/*",2)?p=!j,t(j?
x:y,"AQUA>/*"),o+=2:0;if(!p)if(*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,m=!m:0,m)
{for(rewind(f),q=1;q;)for(r=0;q;)(q=~(j=getc(f)))&&j-10&&j-13?g[r++]=j:(r=r*!s(o
,g,r)?g[r]=0,t(y,"BLUE>"),t(g),t(x+2),o+=r,q=0:0);}*o==92?t(*++o-34?*o-92?o-=2,
"":"\\\\":"\\\""),o++:0;t(*o-60?*o-38?a-o?o--,"":"%c":"&":"<",*o);}}
>>825
getsだと改行が無くなる。

int printf(),(*t)()=printf,memcmp(),(*s)()=memcmp,i=1,j,p,q,r,f;char*o,*a,g[99],
h[999],*x="*/</FONT>",*y="<FONT COLOR=%s";main(m){f=fopen("k","r");for(t("<PRE>"
);m=gets(o=h);t("\n"))for(;*(a=o);o++){for(j=0;m&&j<2;j++)!s(o,j?"*/":"/*",2)?p=
!j,t(j?x:y,"AQUA>/*"),o+=2:0;if(!p)if(*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,m=
!m:m){for(rewind(f),q=1;q;)for(r=0;q;)(q=~(j=getc(f)))&&j-10&&j-13?g[r++]=j:(r=r
*!s(o,g,r)?g[r]=0,t(y,"BLUE>"),t(g),t(x+2),o+=r,q=0:0);}*o==92?t(*++o-34?*o-92?o
-=2,"":"\\\\":"\\\""),o++:0;t(*o-60?*o-38?a-o?o--,"":"%c":"&amp;":"&lt;",*o);}}
827788:03/02/24 20:32
>>825 アンパサンドが消えてますね・・・
機能追加: ちょっと短くできたので、行番号表示をしてみました。

int printf(),(*t)()=printf,memcmp(),(*s)()=memcmp,i,j,p,q,r,f;char*o,*a,g[99],h[
999],*x="*/</FONT>",*y="<FONT COLOR=%s";main(m){f=fopen("k","r");for(t("<pre>");
m=gets(o=h);)for(t("%3d ",++i);*(a=o);o++){for(j=2;m&&j--;)!s(o,j?"/*":"*/",2)?p
=j,t(j?y:x,"AQUA>/*"),o+=2:0;if(!p)if(*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,m=
!m:0,m)for(rewind(f),q=1;q;)for(r=0;q;)(q=~(j=getc(f)))&&j-10&&j-13?g[r++]=j:(r=
r*!s(o,g,r)?g[r]=!t(y,"BLUE>"),t(g),o+=r,q=!t(x+2):0);*o==92?t(*++o-34?*o-92?o-=
2,"":"\\\\":"\\\""),o++:0;t(*o-60?*o-38?a-o?o--,"":"%c":"&amp;":"&lt;",*o);}}
828788:03/02/24 20:44
バグ修正: >>826 さんの指摘の改行を追加

int printf(),(*t)()=printf,memcmp(),(*s)()=memcmp,i,j,p,q,r,f;char*o,*a,g[99],h[
999],*x="*/</FONT>",*y="<FONT COLOR=%s";main(m){f=fopen("k","r");for(t("<pre>");
m=gets(o=h);)for(t("\n%3d ",++i);*(a=o);o++){for(j=2;m&&j--;)!s(o,j?"/*":"*/",2)
?p=j,t(j?y:x,"AQUA>/*"),o+=2:0;if(!p)if(*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,
m=!m:m)for(rewind(f),q=1;q;)for(r=0;q;)(q=~(j=getc(f)))&&j-10&&j-13?g[r++]=j:(r=
r*!s(o,g,r)?g[r]=!t(y,"BLUE>"),t(g),o+=r,q=!t(x+2):0);*o==92?t(*++o-34?*o-92?o-=
2,"":"\\\\":"\\\""),o++:0;t(*o-60?*o-38?a-o?o--,"":"%c":"&amp;":"&lt;",*o);}}
829755:03/02/24 21:35
824のコメントでない/の処理がおかしかったので修正。

int w[999],*q=w,k,printf(),(*f)()=printf,c,d;char*e="</font>",*l="%steal>/",*s=
"<font color=",t[99];a(){f(d-60?d-38?"%c":"&amp;":"&lt;",d);}h(x){return(d=
getchar())<0?0:d-x;}o(x){for(;h(x);)a();}main(){for(k=fopen("k","r");fscanf(k,
"%s",t)>0;)*q++=strdup(t);for(h(f("<pre>"));d>0;)if(d==95|isalpha(*t=d)){t[1]=0
;h(scanf("%[0-9a-zA-Z_]",t+1));for(q=w;*q&&strcmp(t,*q);q++);f(*q?"%sred>%s%s":
t,s,t,e);}else if(d-47){d==34|d==39?f("%c%sblue>",c=d,s),o(c),f(e):0;a();h(0);}
else{if(h(0)-42)d==47?f(l,s),a(),o(10),a(),h(f(e)):f("/");else{f(l,s);do a(),o(
42),a();while(h(47));a();h(f(e));}};}
>828
int printf(),(*t)()=printf,memcmp(),(*s)()=memcmp,i,j,p,q,r,f;char*o,*a,g[99],h
[999],*x="*/</FONT>",*y="<FONT COLOR=%s";main(m){f=fopen("k","r");for(t("<pre>"
);m=gets(o=h);)for(t("\n%3d ",++i);*(a=o);o++){for(q=j=2;m*j--;)s(o,j?"/*":"*/"
,2)||t((p=j)?y:x,"AQUA>/*",o+=2);if(!p?*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,
m=!m:m:0)for(rewind(f),r=0;q;)(q=~(j=getc(f)))&&j-10&&j-13?g[r++]=j:(r=r*!s(o,g
,r)?g[r]=!t(y,"BLUE>"),t(g),o+=r,q=!t(x+2):0);*o==92?t(*++o-34?*o-92?o-=2,"":
"\\\\":"\\\""),o++:0;t(*o-60?*o-38?a-o?o--,"":"%c":"&amp;":"&lt;",*o);}}
>>829
f(l,s);do a(),o(42),a();while(h(47));をfor(f(l,s);a(),o(42),a(),h(47););に。
d==47をd-47に(入れ替え)。
7行目最初のelseの{と、対応する}は冗長。

最後の;は要る?
832755:03/02/24 23:29
>>831
ご指摘通りに。6文字減少。
ただ、d==47は入れ替えると括弧が増える
(もしくは824のバグが再発する)。
d-47?f("/"):(f(l,s),a(),o(10),a(),h(f(e)))

int w[999],*q=w,k,printf(),(*f)()=printf,c,d;char*e="</font>",*l="%steal>/",*s=
"<font color=",t[99];a(){f(d-60?d-38?"%c":"&amp;":"&lt;",d);}h(x){return(d=
getchar())<0?0:d-x;}o(x){for(;h(x);)a();}main(){for(k=fopen("k","r");fscanf(k,
"%s",t)>0;)*q++=strdup(t);for(h(f("<pre>"));d>0;)if(d==95|isalpha(*t=d)){t[1]=0
;h(scanf("%[0-9a-zA-Z_]",t+1));for(q=w;*q&&strcmp(t,*q);q++);f(*q?"%sred>%s%s":
t,s,t,e);}else if(d-47){d==34|d==39?f("%c%sblue>",c=d,s),o(c),f(e):0;a();h(0);}
else if(h(0)-42)d==47?f(l,s),a(),o(10),a(),h(f(e)):f("/");else{for(f(l,s);a(),o
(42),a(),h(47););a();h(f(e));}}
833788:03/02/24 23:35
>>830

int printf(),(*t)()=printf,i,j,p,q,r,f;char*o,*a,g[99],h[999],*x="*/</FONT>",*y=
"<FONT COLOR=%s";main(m){f=fopen("k","r");for(t("<pre>");m=gets(o=h);)for(t("\n"
"%3d ",++i);*(a=o);o++){for(q=j=2;m*j--;)memcmp(o,j?"/*":x,2)||t((p=j)?y:x,"AQU"
"A>/*",o+=2);if(!p?*o==34?t(m?y:"\"%s",m?"RED>\"":x+2),o++,m=!m:m:0)for(rewind(f
),r=0;q;)(q=~(j=getc(f)))&&j-10&&j-13?g[r++]=j:(r=r*!memcmp(o,g,r)?g[r]=!t(y,"B"
"LUE>"),t(g),o+=q=r,t(x+2):0);*o==92?t(*++o-34?*o-92?o-=2,"":"\\\\":"\\\""),o++:
0;t(*o-60?*o-38?o-a?o--,"":"%c":"&amp;":"&lt;",*o);}}
>>833
>>1にあるやうに1行は79文字にしませう
>>834
以前は7x80だったよね?
なんで79になってるの?中途半端でしょ。
836835:03/02/25 00:55
おっと、発言が正確でないな。
以前に、「なぜ80じゃないのか?」という議論があったとき、
改行を含むか含まないか、80文字でも1行で表示できるできない、
といろいろ意見があって、結局のところ、
「79でも80でもどちらでも、その人の好きなように」という結論だったはず。
837788:03/02/25 01:32
>>834
いやいやおかしいな、と思ってよく見たら、
エディタの80行自動折り返しが、横80文字でした。

ついでに過去ログをざっと眺めてみましたが、
>>836 の議論は、もともと「改行文字を含めて」79文字なのかどうかの議論のようです。
part1の最初の頃は1行78文字の作品もあります。
が、その後いろいろ見ていると、半数近くの作品が、
「改行文字を含めずに」79文字と80文字になっているようですね。

私としては、どちらでもいいかなと思います。
しかし、79文字の方が難易度が高いので、
(一応今回の私のは、79文字でも7行でしたが)
次回も挑戦することがあれば79文字でやっていこうと思います。
grep. 3行半。

main(y,z)char**z;{void*a,*b;int c=1,e,f;char d[999];y!=4?exit():0;a=fopen(z[1],
"r");b=fopen(z[2],"w");for(;!feof(a);c++){fgets(d,999,a);f=strlen(d)-1;d[f]==10
||d[f]==13?d[f]=0:0;for(e=0;d[e]>0;e++)!memcmp(d+e,z[3],strlen(z[3]))?fprintf(b
,"%s(l%d):%s\n",z[1],c,d),d[e+1]=0:0;}}


grep [検索を掛けるファイル名][リスト出力用ファイル名][検索キーワード]
839シ尺木寸:03/02/25 03:49
>>838 新しいのがきたらあげよう。
840838:03/02/25 03:58
正規表現組み込むのは大変だな・・・
841仕様書無しさん:03/02/25 12:15
「ししゃくもくすん」って何ですか?
grep 7行

main(y,z)char**z;{void*a,*b;int c=1,e,f,h,i,j;char d[999],g[99][999],k[99];y!=4?
exit():0;memset(k,0,99);for(f=h=i=0;z[3][i]>0;f++,i++){z[3][i]==38?g[h][f]=0,f=0
,h++,i++,k[h]=1:0;z[3][i]==124?g[h][f]=0,f=0,h++,i++:0;z[3][i]==92&&(z[3][i+1]==
38||z[3][i+1]==124)?i++:0;g[h][f]=z[3][i];g[h][f+1]=0;}a=fopen(z[1],"r");b=fopen
(z[2],"w");for(;!feof(a);c++){fgets(d,999,a);f=strlen(d)-1;d[f]==10||d[f]==13?d[
f]=0:0;for(f=0;f<=h;f++){for(e=j=0;d[e]>0;e++)memcmp(d+e,g[f],strlen(g[f]))==0?j
=1:0;k[f]>0&&j==0?j=0,f=h+1:0;}j==1?fprintf(b,"%s(l%d):%s\n",z[1],c,d):0;}}

正規表現"|","&"入れただけで2倍・・・
>正規表現"|","&"入れただけで2倍・・・
"&"?
あ、・・・(検索中)・・・"&"なんて正規表現に無いか(゚∀。)
比較演算子の結果のみを論理演算するなら、&&ではなく&だけでOK。0 or 1 だから。一文字減る。
grep 6行半

main(y,z)char**z;{void*a,*b;int c=1,e,f,h,i,j;char d[999],g[99][99],k[99];y=4;y<
4?exit():0;memset(k,0,100);for(f=h=i=0;z[3][i]>0;f++,i++){z[3][i]==38?g[h][f]=0,
f=0,h++,i++,k[h]=1:0;z[3][i]==124?g[h][f]=0,f=0,h++,i++:0;i+=z[3][i]==92&(z[3][i
+1]==38|z[3][i+1]==124);g[h][f]=z[3][i];g[h][f+1]=0;}a=fopen(z[1],"r");b=fopen(z
[2],"w");for(;!feof(a);c++){fgets(d,999,a);f=strlen(d)-1;d[f]==10|d[f]==13?d[f]=
0:0;for(f=j=0;f<=h;k[f]>0&!j?f=h+1:f++)for(e=0;d[e]>0;e++)memcmp(d+e,g[f],strlen
(g[f]))==0?j=1:0;j?fprintf(b,"%s(l%d):%s\n",z[1],c,d):0;}}

grep [検索を掛けるファイル名][検索ヒットリスト用ファイル名][検索キーワード]

※検索キーワードの正規表現のようなもの
| …または…を含む行を検索(ex. dog|cat|frog)
& …かつ…を含む行を検索(ex. cow&bird)
>>841 4バイト文字だよ
4バイトなのか
>>846
オリジナルのgrepみたいな仕様にした。出力は標準出力で、
grep パターン ファイル名

それから、&の動作が間違っていると思うのだが・・・
とりあえずそのまま縮めた

int c=1,f,h,i,j;char*o,d[999],g[99][99],k[99];main(y,z)char**z;{if(y<3)exit();
for(o=*++z;o[i]>0;g[h][++f]=0)o[i]==38?f=g[h][f]=0,i++,k[++h]=1:0,o[i]==124?f=g
[h++][f]=0,i++:0,i+=o[i]==92&(o[i+1]==38|o[i+1]==124),g[h][f]=o[i++];for(y=
fopen(*++z,"r");fgets(d,999,y);j&&printf("%s(l%d):%s\n",*z,c,d),c++)for(f=
strlen(d)-1,f=j=d[f]==10|d[f]==13?d[f]=0:0;f<=h;k[f]>0&!j?f=h+1:f++)for(o=d;*o;
)j+=!memcmp(o++,g[f],strlen(g[f]));}
マッチングはstrstr()でよいのでは。あるいはsscanf()を使い、[]にも
対応するとか。

あと、argcのチェックや、CR,LF両対応(テキストモードで開いてる
にも関わらず)をするより、gREpに近い機能を盛り込んだほうが
よいのでは。

&機能はgrepを|で接げば実現できるので、個人的には不要に思う。
851!842:03/02/27 23:33
>>850 のアドバイスを取り入れた
俺もオリジナルgrepの動作を真似たほうがよいと考えている。
grep '[1-9][1-9]*' file
くらいが実行できるようにしてみるつもり。
ちなみに or の | があるのは、egrep か grep -E の機能だね。

int c,f,h,i,j;char*o,d[999],g[99][99],k[99];main(y,z)char**z;{for(o=*++z;o[i]>0
;g[h][f++]=o[i++])o[i]==124?f=g[h++][f]=0,i++:0,i+=o[i]==92&o[i+1]==124;for(y=
fopen(*++z,"r");fgets(d,999,y);c++,j&&printf("%s(l%d):%s",*z,c,d))for(f=j=0;f<=
h;k[f]&!j?f=h+1:f++)j+=!!strstr(d,g[f]);}
852!842:03/02/28 16:32
grep 1[123][123] file
[]による選択が可能なようにした。ただし、[1-9]のような指定はまだできない。
残り2行半で、[1-9a-zA-Z]と.くらいは実装できるかなあ。
未熟な俺にはそれで精一杯だろうから、スペシャリストの後輪キボンヌ

int c,f,h=1,j;char d[999],g[999][99],x[999];a(o,p,f,m,n)char*o,*p;{for(;*p;g[m]
[f++]=*p++)if(*p==91){for(o=p+1;*++p-93;g[h++][f]=*p)strcpy(g[h],g[m]);for(x[m]
=n=h;p>o;)a(o++,p+1,f+1,--n);return;}}main(y,z)char**z;{a(d,*++z,0,0,0);for(y=
fopen(*++z,"r");fgets(d,999,y);c++,j&&printf("%d:%s",c,d))for(j=f=0;f<h;f++)!x[
f]?j+=!!strstr(d,g[f]):0;}
853デフォルトの名無しさん:03/02/28 16:35
↓↓↓↓↓★ココだ★↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp/linkvp.html
>>852
strstr()をsscanf()にし%[^0-9]を使い、先頭から順にマッチングすれば
[^0-9]には対応できるのでは? .は%*cで。
855デフォルトの名無しさん:03/03/01 09:36
なんかヒサビサに熱いね!age
856デフォルトの名無しさん:03/03/01 14:27
age
857!842:03/03/01 15:13
grep [CMG][a-zA-Z1-9] file
[]による選択の際、-(ハイフン)を用いた指定が可能に。
>>854
オートマトンを作ったほうがよいのかもしれんが、7行に収まりそうもないので、
次のバージョンからsscanfによる検索に挑戦してみる。

int c,f,h=1,j;char d[999],g[999][99],x[999];a(o,p,e,m,n)char*o,*p;{for(;*p;g[m]
[e++]=*p++)if(*p==91){j=0;for(o=p+1;*++p-93;j++){if(*p==45&p[1]!=93)for(f=p[-1]
+1,p++;f<*p;g[h++][e]=f++,j++)strcpy(g[h],g[m]);strcpy(g[h],g[m]);g[h++][e]=*p;
}for(x[m]=n=h,m=j;m--;)a(o,p+1,e+1,--n);return;}}main(y,z)char**z;{a(d,*++z,0,0
,0);for(y=fopen(*++z,"r");fgets(d,999,y);c++,j&&printf("%d:%s",c,d))for(j=f=0;f
<h;f++)!x[f]?j+=!!strstr(d,g[f]):0;}
素人からのお題
「アナグラム」
どう?
 __
| ム |
 ̄ ̄ ̄ ̄
>>859
3分でこの回答なら合格。
>>858
anagram 辞書ファイル名 アルファベットのみの文字列
辞書は1語1行で終端に必ず改行を入れる
9行だがこんな感じでどうだ?

typedef struct D{struct D*p;char f[96],s[];}d;int i,j,k;d*a,*h,*n,*t,*e[999],Z;
d*A(s,l)char*s;{;a=(d*)calloc(1,sizeof(d)+l);s[--l]=0;strcpy(a->s,s);for(s=a->s
;l;a->f[s[--l]&=95]++);return a;}g(char*f){for(i=96;i-->0;(t->f[i]<f[i])?i=-2:0
);return i+3;}x(f,a)char*f;{for(i=96;i--;t->f[i]+=a*f[i]);}main(c,v)char**v;{
char s[999];void*f=(void*)fopen(v[1],"r");for(;fgets(s,999,f);n=A(s,strlen(s)),
n->p=h,h=n);for(t=A(v[2],strlen(v[2])+1),j=0;j+1;){for(n=h;;){for(;n;n=n->p)if(
g(n->f)){x(n->f,-1),e[j++]=n;break;}if(!n){if(!memcmp(Z.f,t->f,96)){for(k=0;k<j
;printf("%s ",e[k++]->s));puts("");}if(!j--)break;x(e[j]->f,1);n=e[j]->p;if(!n)
x(e[--j]->f,1);}}}}
862デフォルトの名無しさん:03/03/04 21:05
age
ex)grep abc[def][g-i]*?j filename

#include<stdio.h>
#include<string.h>
char*X,L[3][9999];C(char*S,char*D){char*s;for(s=*D-42?"":S;*s&&!C(s,D+1);++s);
return*D?*D-42?*D-91||!(s=strchr(D,93))?*D-63?s=D-~strcspn(D+1,"[*?"),strncmp(
S,D,s-D)?0:C(s-D+S,s):*S&&C(S+1,D+1):(sprintf(L[1],"%%1%s",D),sscanf(S,L[1],L[
2])&&C(S+1,s+1)):C(s,D+1):1;}main(c,v)char**v;{FILE*f=fopen(v[2],"r");for(c=0;
X=fgets(*L,9999,f);*X&&printf("%d:%s",c,*L))for(++c;*X&&!C(X,v[1]);++X);}
お題「麻雀」

この程度↓のルールなら7行楽勝では?
ttp://www.asahi-net.or.jp/~EY5K-MYHR/p_majan.htm
>>864
FP-602P! 懐かしいな。
自分は501Pしか持ってませんでしたけどね。(泣
まず解読するのに手間がかかるな(w
HSP2.6

title "5行クエスト":h=95:i=150:v=13:x=3:y=3:z=2:n="勇者":m="魔王":width 420,200
mes m+"が現れた!":wait 99:do:text 13:randomize:rnd d,20:if d>18{d=d*2}if t\2=1{
d+(x-y):a=m:b=n:h-d:c=h}else{d+(v-z):a=n:b=m:i-d:c=i}mes a+"「"+b+"氏ねよ」"
wait 40:mes a+"の攻撃!"+b+"に"+d+"のダメージ! "+b+"の残りHP"+c+"":wait 90:t+
if t\5=0{cls}until (h<1)|(i<1):mes b+"は氏んだ":dialog a+"必死だな(藁",1,"END"
>>866
プレイヤーの参加性がほしい。
1ターン中に一定時間内にマウスかキーを連打させ、
その回数をダメージに反映させるようにしたら?
(さらには攻撃はマウス連打、防御(被攻撃)はキー連打とか)

んで、ゲームバランスを、必死にならないと勝てないくらいにする、と。
868866:03/03/12 22:04
7行クエスト

z=96:v=16:h=z,z:c="λ":e="城":do:stick k,15:x+=k&4>0*(x+v<winx)-(k&1*x>0)*v
y+=k&8!0*(y+v<winy)-(k&2*y>0)*v:pos x,y:mes c:if k>0{cls}:wait 1:pos z,z:mes e
until x=z&(y=z):repeat 4:boxf:wait v:cls:wait v:loop:sdim n,8,2:n="魔王","勇者"
width 320,320:pos:cls:mes n+"が現れた!":wait z:cls:do:mes "←連射しる!":text v
g=g^1:b=g^1:do:stick k:d+=k&1:a+:await 1:until a\300=0:if t\2=1{d=30-d}
h.b-d:mes n.g+"の攻撃!"+n.b+"に"+d+"のダメージ! "+n.b+"HP"+h.b:d=0:t+:wait z
if t\6=0{cls}until h.b<1:mes n.b+"は氏んだ":dialog n.g+"必死だな(藁",1,"END"
869デフォルトの名無しさん:03/03/13 01:56
836スゲェ
ジサクジエンカッコワルイ
7行で画像ファイルの操作って出来るかな?
操作の種類は問わないけど
xpmとかだと簡単っぽい
xpmのフォーマットってどんなの?
>>873
ttp://water.si.hirosaki-u.ac.jp/~slmizu/jikken_gazo/jikken_gazo/node3.html#SECTION00422000000000000000
こんなの。
*NIX上限定なら#include</dev/tty>とかで読み込みに関する記述を省ける(邪道だな
ども。文字列なのか。
でもこれに対してやりたい操作ってなんかあるの?
拡大・縮小、トリミング、増減色くらいかな。
それかxpm2bmpとか(キビシイか)。
モザイク付けてやらしい画像ぽくするとか。実用的。
16x16でモザイク?
イヤラシイ画像を自動生成するとか。
そういや、bmpやpngファイルの生成が過去にあったね。
880デフォルトの名無しさん:03/03/15 13:28
汚いコードばっかりだな
もっと見易く書けよ
>>880
ネタ ? 煽り ? 単なるヴァカ ?
釣りだうんこ
>>880
どうっすか?
釣れてますか?
ム板で「ぬるぽ」の文字を見つけたら自動的に「ガッ」のレスを返す
プログラムをどなたか作ってください。
自分で殴るから面白いのに・・・
自動でやらせて何が嬉しいんだか・・・
886デフォルトの名無しさん:03/03/17 21:22
保守
ねた:シリアル通信
サーバとクライアント間で文字列(ないしは1バイト記号)を転送をする

環境:お好きなように
「FX-602P のエミュレータがほしい」とか逝ってみる鉄男。
過去の7行言語系の能力から察するに、>>864のいう麻雀のほうが
まだ実現可能性があると思うがどうか。
ネタ:ファイル暗号化/複合化
7行でできる限り強力なもの 暗号化と複合化は別々で桶
891デフォルトの名無しさん:03/03/21 00:12
>>890
7行RSAとかどうよ
多倍長できないと駄目ね
麻雀面白いな
ネタ:ファイヤーウォール
楽勝だろ?
>>893
HTTP proxy なら過去にあったが、任意のポートとなるとまだないね。

ファイルからIPアドレス変換とか許可ポートを取得して、
それにしたがってNATをかますとか(NAPTは無理だろう)。
ネタ:ぬるぽ
>>895
ネタ:ガッ
897デフォルトの名無しさん:03/03/24 21:26
int main(int argc,char **argv){*argv=NULL;}//ぬるぽ
>>897
int main(int argc,char **argv){return (int)*argv[argc];}
のほうが、コンパイル時にエラーが出ず、コード中にNULLがなく、
それでいて確実にNULL参照するのでいいのでは? どうでもいいが。。
本当にどうでもいいな。

どうでもいいけど900get
>>900
どうでもよくない

てつでもいいけど902get
>>902
意味がない
ねた:ボンバーマソ
905 ◆Bpod9Etbmc :03/03/27 23:43
Brainf*ck
/*---------------------------------------------------------------------------*/
#include <stdio.h>
main(int c,char**v){char*s,i[30000];int l,n,b,t=30000;long a[9];FILE*f;for(++v;
*v;++v){memset(i,0,t);s=i;b=0;if(f=fopen(*v,"r")){while(l=fgetc(f),l-EOF){if(l
=='>'&&++s>=i+t)exit(1);if(l=='<'&&s--<i)exit(1);if(l=='+')++*s;if(l=='-')--*s;
if(l==',')*s=getchar();if(l=='.')putchar(*s);if(l==']'){if(!b)exit(1);fseek(f,a
[--b],0);}if(l=='['){if(b>9)exit(1);if(*s)a[b++]=ftell(f)-1;else{n=0;do{l=fgetc
(f);if(l=='[')++n;if(l==']'&&!n--)break;}while(l-EOF);}}}fclose(f);}}return 0;}
/*---------------------------------------------------------------------------*/
>>905
本家に3行インタプリタがあったはずだが。
907 ◆Bpod9Etbmc :03/03/28 02:44
リベンジ。
エラーチェックを外し、全体的にリファイン+いい加減化。
入力文字列をファイルの中身から argv[1] に変更。

char*s,b[30000],*p=b,l;x(int i,int d){while(l=s[i++]){if(l==']')return i;if(d){p
+=l=='>';p-=l=='<';*p+=l=='+';*p-=l=='-';if(l==',')*p=getchar();l=='.'&&putchar(*
p);}if(l=='['){while(d&&*p)x(i,1);i=x(i,0);}}}main(int c,char**v){s=v[1];x(0,1);}
そろそろ次スレの時期か?
だいぶ古いネタだが1行にしろ。
Input: Integer n > 1

if (n has the form ab with b > 1) then output COMPOSITE

r := 2
while (r < n) {
if (gcd(n,r) is not 1) then output COMPOSITE
if (r is prime greater than 2) then {
let q be the largest factor of r-1
if (q > 4sqrt(r)log n) and (n(r-1)/q is not 1 (mod r)) then break
}
r := r+1
}

for a = 1 to 2sqrt(r)log n {
if ( (x-a)n is not (xn-a) (mod xr-1,n) ) then output COMPOSITE
}

output PRIME;
さすがに一行は無理でしょう
911デフォルトの名無しさん:03/04/13 12:26
>>909
次スレ前に気合上げ
次スレはまだいいでしょう。
あせらずに!
913山崎渉:03/04/17 15:28
(^^)
914山崎渉:03/04/20 04:30
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
915JPEG part 1:03/04/22 23:24
#include <math.h>
typedef unsigned char B;typedef int I;
B z[]={0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,
6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,
39,46,53,60,61,54,47,55,62,63};typedef struct{I c[256],s[256],v[256];}H;
I wi,he,m_wi,m_he,m_h,m_v,cc,sc,ri,ci[3],si[3],s_ac[3],s_dc[3],c_h[3],c_v[3],
c_qt[3],s_h[3],s_v[3],s_qt[3],m_buf[4096],*m_yuv[4],mp[3],qt[3][64],n_qt,bb,br;
double bi[4096];H hf[2][3];FILE *fp;B gb(){return fgetc(fp);}I gw(){return gb()
<<8|gb();}I gi(I b){I c,r;while(br<17){c=gb();if(c==255)gb();bb=(bb<<8)|c;br+=8
;}r=(bb>>(br-b))&((1<<b)-1);br-=b;return r;}sof(){I c,i,v;gw();gb();he=gw();wi=
gw();cc=gb();for(i=0;i<cc;i++){ci[i]=gb();c=gb();v=(c>>4)&15;if(m_h<v)m_h=v;c_h
[i]=v;v=c&15;if(m_v<v)m_v=v;c_v[i]=v;c_qt[i]=gb();}}dqt(){I c,i,j,v,s=gw()-2;
while(s>0){s--;j=gb()&7;if(j>n_qt)n_qt=j;for(i=0;i<64;i++){s--;qt[j][i]=gb();}}
}dht(){I s,c,i,j,k,n,l[17];H *t;s=gw()-2;while(s>0){c=gb();t=(H*)&hf[c>>4][c&15
];for(n=0,i=1;i<=16;i++)n+=l[i]=gb();for(k=0,i=1;i<=16;i++)for(j=0;j<l[i];j++)t
->s[k++]=i;for(k=c=0,i=t->s[0];k<n;){while(t->s[k]==i)t->c[k++]=c++;if(k>=n)
break;do{c<<=1;i++;}while(t->s[k]!=i);}for(k=0;k<n;k++)t->v[k]=gb();s-=n+18;}}
sos(){I i=0,c;gw();sc=gb();for(;i<sc;i++){si[i]=gb();c=gb();s_dc[i]=c>>4;s_ac[i
]=c&15;}gw();gb();}I hd(I a,I b){I c,s,k,v;c=s=k=0;H *h=&(hf[a][b]);while(s<16)
916part 2:03/04/22 23:24
{s++;c=(c<<1)|gi(1);while(h->s[k]==s){if(h->c[k]==c)return h->v[k];k++;}}return
-1;}id(I *a,I *b){I i,j;double t[64];for(i=0;i<64;i++)t[i]=0;for(i=0;i<4096;i++
)t[i&63]+=a[i/64]*bi[i];for(i=0;i<64;i++)b[i]=(I)t[i];}I gv(I s){I v=0;if(s){v=
gi(s);if(!(v&(1<<(s-1))))v=v-(1<<s)+1;}return v;}dh(I a,I *b){I s,l,r,v,i=1,*pQ
=(I*)qt[s_qt[a]];s=hd(0,s_dc[a]);if(s<0)return 0;v=gv(s);mp[a]+=v;*b=mp[a]* *pQ
;while(i<64){s=hd(1,s_ac[a]);if(s<=0)break;r=(s>>4)&15;while(r--)b[z[i++]]=0;b[
z[i]]=gv(s&15)*pQ[i++];}while(i<64)b[z[i++]]=0;}bl(I*a,I*b,I wd,I x0,I y0,I x1,
I y1){I w=x1-x0,h=y1-y0,x,y,x2,y2;for(y=y0;y<y1;y++)for(x=x0;x<x1;x++){y2=(y-y0
)*8/h;x2=(x-x0)*8/w;b[(y*wd)+x]=a[(y2*8)+x2];}}dm(){I s,v,h,*p,hh,vv,a[64],b[64
];for(s=0;s<sc;s++){hh=s_h[s];vv=s_v[s];for(v=0;v<vv;v++)for(h=0;h<hh;h++){dh(s
,a);id(a,b);p=m_buf+(s<<10);bl(b,p,m_wi,m_wi*h/hh,m_he*v/vv,m_wi*(h+1)/hh,m_he*
(v+1)/vv);}}}dy(I h,I _v,B *r){I x0,y0,i,j,x1,y1,*y,*u,*v,Y,U,V,k;x0=h*m_h*8;y0
=_v*m_v*8;x1=wi-x0;x1=(x1>m_wi)?m_wi:x1;y1=he-y0;y1=(y1>m_wi)?m_wi:y1;y=m_buf;u
=m_buf+1024;v=m_buf+2048;for(j=0;j<y1;j++)for(i=0;i<x1;i++){k=j*m_wi+i;Y=y[k];U
=u[k];V=v[k];h=((y0+j)*wi+(x0+i))*3;_v=Y<<12;k=128+((_v+V*0x166E)>>12);r[h]=(k>
255)?255:((k<0)?0:k);k=128+((_v-V*0x0B6C)>>12);r[h+1]=(k>255)?255:((k<0)?0:k);k
=128+((_v+U*0x1C59)>>12);r[h+2]=(k>255)?255:((k<0)?0:k);}}init(){I c,u,v,m,n;d\
ouble o[8],p[8],q,pi=M_PI;for(u=0;u<8;u++)for(v=0;v<8;v++){for(m=0;m<8;m++)o[m]
917part 3(最後):03/04/22 23:25
=cos(((2.0*m+1.0)*u*pi)/16.0);for(n=0;n<8;n++)p[n]=cos(((2.0*n+1.0)*v*pi)/16.0)
;for(m=0;m<8;m++)for(n=0;n<8;n++){q=0.25;if(u==0)q/=sqrt(2);if(v==0)q/=sqrt(2);
bi[(u*8+v)*64+m*8+n]=o[m]*p[n]*q;}}mp[0]=mp[1]=mp[2]=0;n_qt=m_h=m_v=br=bb=0;wh\
ile(1){if(gb()!=0xFF||feof(fp))break;switch(gb()){case 0xD8:break;case 0xD9:re\
turn;case 0xC0:sof();break;case 0xC4:dht();break;case 0xDB:dqt();break;case 0x\
DD:gw();ri=gw();break;case 0xDA:sos();return;default:fseek(fp,gw()-2,SEEK_CUR);
break;}}}dec(B *r){I i,j,hu,vu,m_c;for(i=0;i<sc;i++)for(j=0;j<cc;j++)if(si[i]==
ci[j]){s_h[i]=c_h[j];s_v[i]=c_v[j];s_qt[i]=c_qt[j];break;}m_wi=m_h*8;m_he=m_v*8
;for(i=0;i<4096;i++)m_buf[i]=128;for(i=0;i<sc;i++)m_yuv[i]=m_buf+i*4096;hu=wi/
m_wi;vu=he/m_he;hu+=(wi%m_wi)>0;vu+=(he%m_he)>0;m_c=0;for(j=0;j<vu;j++)for(i=0;
i<hu;i++){m_c++;dm();dy(i,j,r);if(ri&&m_c>=ri){br-=(br&7)+8;mp[0]=mp[1]=0;mp[2]
=m_c=0;}}}

で、終わり
918915-917:03/04/23 00:09
あ、使い方説明忘れてた
fp = fopen("hoge.jpg","rb");してから
init();decode( rgb );で、24bit RGBが出てきます
長いのキター
これを7行に・・・出来るわけ無いか(´Д`)
>>919
諦めたらそこで終わりだ。明らめようじゃないか!
変数宣言だけで7行近くあるな…
922915:03/04/23 20:27
駄コードでスマン
地道にやればいつかは…

関数 init より
double o[8],p[8],q,pi=M_PI;for(u=0;u<8;u++)for(v=0;v<8;v++){for(m=0;m<8;m++)o[m]
=cos(((2.0*m+1.0)*u*pi)/16.0);for(n=0;n<8;n++)p[n]=cos(((2.0*n+1.0)*v*pi)/16.0)
;for(m=0;m<8;m++)for(n=0;n<8;n++){q=0.25;if(u==0)q/=sqrt(2);if(v==0)q/=sqrt(2);
bi[(u*8+v)*64+m*8+n]=o[m]*p[n]*q;}}

double C(int m,int u){return cos((2*m+1)*u*M_PI/16);}
cos の式を関数にして追い出す
for(u=0;u<64;u++)for(m=0;m<64;m++)
bi[u*64+m]=C(m/8,u/8)*C(m&8,u&8)*((u/8&&u&8)?2:u?sqrt(2):1)/8;
以前どっかで書かれてたが、7行プログラムを多段接続するアプローチはどうか?
925デフォルトの名無しさん:03/04/25 22:21
がんばって〜
ハフマンとか分離したらー
10行くらい減らせた〜、あと10行くらいは行ける。
でも、それでも40行くらいあるぞ〜 ・・・
m_yuv って未使用だね?
君たちさぁ、そうやって外人のパクってばっかりいるから馬鹿にされちゃうんだよ
930915:03/04/26 23:36
>>927 すごいっス
>>928
あ、未使用ですね。
気づかなかった(汗
30行くらいになたよ。25行くらいになったら一度うpしてみるね。
n_qt も未使用だ...
m_yuv と n_qt って、使わなくてもいいの?
933915:03/04/27 17:32
>>932 m_yuvは、縮める前のライブラリでは使ってました
n_qtは一応用意してるだけだと思った(エラー検出用かも
934デフォルトの名無しさん:03/04/28 00:03
そろそろ歴代ベスト3の7行プログラムを投票汁!
なかなか参考になったり役立つプログラムがあったりして諜報してます。
ありがとう。>ALL
s/諜報/重宝/
デシタ
>>934
オセロ・圧縮・手とリス
9381:03/04/28 23:16
>>915 を、ppm 形式で出力するようにしました。標準入出力です。
jpeg2ppm.c

char*z=" !(0)\"#*18@92+$%,3:AHPIB;4-&'.5<CJQXYRKD=6/7>ELSZ[TMF?GNU\\]VOW^_",G[1
<<24];int w,e,W,E,l,O,A,D[6],K[6],y=64,M[4096],P[3],qt[3][64],C[9],S[9],B,T,i,j
,c,R[128],J,f,d,F=4096;double bi[4096],t[64],p=1.41421356,q,I=.19634954;struct{
int c[256],s[256],v[256];}*N,h[2][3];extern double cos();g(){return getchar();}
L(){return g()<<8|g();}gi(b){for(;T<17;T+=8)(c=g()&255)-255?0:g(),B=B<<8|c;T-=b
;return(1<<b)-1&B>>T;}H(c,s){N=h[c]+s;for(c=s=i=0;s++<16;)for(c=c*2|gi(1);N->s[
i]==s;i++)if(N->c[i]==c)return N->v[i];return-1;}gv(s,v){return s?v=gi(s),v&1<<
s-1?v:v-(1<<s)+1:0;}n(m,v,n,k){for(v=F;v--;M[v]=128){i=v>>9;j=v/y%8;bi[v]=(q=i?
.25:.25/p,j?q:q/p)*cos((v/8%8*2+1)*i*I)*cos((v%8*2+1)*j*I);}for(;~g();){m=g()-
192;if(m-24){if(m==25)return;v=L();if(!m)for(l=g(w=L(e=L(g(i=0))));i<l;C[6+i++]
=g(E<c?E=c:0)){c=g(D[3+i]=g());W<c>>4?W=c>>4:0;C[3+i]=C[i]=c&=15;}else if(m==29
)A=L();else{for(v-=2;m==4&v>0;v-=n+18){c=g();N=h[c>>4]+c%16;for(n=i=0;i<16;)n+=
R[++i]=g();for(k=i=0;++i<17;)for(j=R[i];j--;)N->s[k++]=i;for(j=k=c=0,i=N->s[0];
k<n;){while(N->s[k]==i)N->c[k++]=c++;if(k<n)while(c*=2,N->s[k]!=++i);}for(;j<n;
)N->v[j++]=g();}if(m==26){for(O=g(i=0);i<O;i++)K[3+i]=K[i]=g(D[i]=g());g(L());
9392:03/04/28 23:16
return;}for(;v-->0;)for(j=g(i=0)&7;m==27&i<y;qt[j][i++]=g())v--;}}}}main(Q){n()
;for(Q=O;Q--;)for(i=l;i--;)if(D[Q]==D[3+i]){for(c=3;c--;)S[Q+3*c]=C[i+3*c];i=0;
}for(W*=8,E*=8;f<e/E+(e%E>0);f++)for(d=0;d<w/W+(w%W>0);A&&++J>=A?T-=T&7+8,P[0]=
P[1]=P[2]=J=0:0){int c,s=0,h,V,b[64];for(;s<O;s++)for(Q=S[s],V=S[3+s],l=0;l<V;l
++)for(h=0;h<Q;h++){int*pQ=qt[S[6+s]],r,i=1;c=H(0,K[3+s]/16);if(c>=0){memset(R,
0,256);P[s]+=gv(c);for(*R=*pQ*P[s];i<y&&(c=H(1,K[s]&15))>0;R[z[i]-32]=gv(c&15)*
pQ[i],i++)for(r=c/16&15;r--;)R[z[i++]-32]=0;}for(c=F;c--;c<y?t[c]=0:0)b[c%y]=t[
c%y]+=R[c/y]*bi[c];for(j=r=W/Q;j--;)for(i=c=E/V;i--;)M[F/4*s+(j+E*l/V)*W+i+W*h/
Q]=b[j*8/c*8+i*8/r];}Q=d++*W,V=f*E;for(j=e-V>W?W:e-V;j--;)for(i=w-Q>W?W:w-Q;i--
;)for(c=3;c--;G[((V+j)*w+Q+i)*3+c]=s<256?s<0?0:s:255)s=j*W+i,s=128+(M[s]*F+(c-1
?1:-1)*M[s+(c-2?F/2:F/4)]*(c?c-1?7257:2924:5742)>>12);}printf("P6 %d %d 255\n",
e,w);for(i=0;i<e*w*3;)putchar(G[i++]);}
>>934
1:オセロ
2:砂嵐
3:テトリス
lispとかBASICとか、どうなったんだっけ?7行到達ならそれらが一番かな
あとはカラースネーク
>>938-939
YCbCr変換に感動

>>934
1:オセロ
2:BASIC
3:ハフマン
1:オセロ
2:BASIC
3:マインスイーパー

オセロは完成度の他にも、俺を含む幾多の職人をこのスレに呼び寄せた点がでかい。
BASICは純粋に驚いた。
マインスイーパーは、最後の7行化が目から鱗だったからよく覚えている。
絶対無理だろうという雰囲気を見事打ち消してくれる作品が好きだ。
このJPEG変換が7行になったら1位をあげたい。が、今のところ、
1:レンジコーダー(part1の)
2:オセロ
3:SHA1
次点:テトリス
次スレ作るのやめないか……?
個人的に好きなやつ

1:オセロ              …… MSX-FANの1画面プログラムを思い出した
2:さいたまベンチ         …… ワラタ
3:BrainFuckインタープリタ   …… 職人さんありがとう

 や め な い か ?
948デフォルトの名無しさん:03/04/29 13:28
1、オセロ
2、BASIC

は硬いな。

3、はHuffmanか、RangeCoderか…、テトリスか…

悩む。
オセロは衝撃的だったので1番。
basicもかなりgoodで2番。
3番…huffmanは自分でも出来たから…RangeCoderかな

テトリスを入れる余地が無いのが残念だ。
7行スレらしく、歴代ベスト7を決めればいいんだよ。
そうすればテトリスの入る余地だってあるし。
じゃあBEST7行-!(7行達成してなくてもいいよな?
1:オセロ
2:BASIC
3:ハフマン
4:lisp
5:grep
6:テトリス
7:HTTPd
0:part2 581
>>951
7行達成していないのはダメでしょう
>>950
次スレよろ
>>945と同様、次スレいらないんじゃないかと思うのだが
理由もなく何をのうのうと・・・
七行にこだわることはないと思う。
目安だったけど。
七行にこだわらずして、何が「七行プログラミング」なのだと。
>>955
パート2のラスト、パート3の最初を見るとなぁ
最近のネタ切れも含めて、過去の栄光を…と思った
じゃあ、「七行スレを懐かしむ」スレをたてて
>>959
ワラタ、それいいな
なんなら立てようか?
じゃ、6行スレ立てますね
そのベスト3、もっかい晒せや。漏れがさらに短くしてやっから。
>>962
お題がなければ何もできない厨房ハケーソ
>>962
そのベスト3じゃなくて悪いんだが、これを7行にして く れ な い か ?

#include <stdio.h>
int main (void) { printf ("hell world!\n"); return 0; }
#include <stdio.h>
int main (void) { printf ("hell"
" "
"wo"
"rld"
"!\n");
return
0; }

...駄目でした...
>>965
P a r t 1 の >>3 を 見 れ 。
誰だよ、先走って次スレ作った奴は(w
969デフォルトの名無しさん:03/05/04 08:09
まだ生きてた
七行プログラミング part4
http://pc2.2ch.net/test/read.cgi/tech/1051703369/
埋め立て代わりに。
jpeg2pgm.c でつ。

char*z=" !(0)\"#*18@92+$%,3:AHPIB;4-&'.5<CJQXYRKD=6/7>ELSZ[TMF?GNU\\]VOW^_",G[1
<<24];int*$,w,e,W,E,l,O,A,D[6],K[6],y=64,M[4096],P[3],a[3][64],C[9],S[9],B,T,i,
j,c,R[128],J,f,d,F=4096,I=16;double k[4096],t[64],cos();struct{int c[256],s[256
],v[256];}*N,h[6];g(){return getchar();}L(){return g()<<8|g();}x(b){for(;T<17;T
+=8)(c=g()&255)-255?0:g(),B=B<<8|c;T-=b;return(1<<b)-1&B>>T;}H(c,s){N=h+c*3+s;
for(c=s=i=0;s++<I;)for(c=c*2|x(1);N->s[i]==s;i++)if(N->c[i]==c)return N->v[i];
return-1;}gv(s,v){return s?v=x(s),v&1<<s-1?v:v-(1<<s)+1:0;}n(m,v,n,k){for(;~g()
;){m=g()-192;if(m-24){if(m==25)return;v=L();if(!m)for(l=g(w=L(e=L(g(i=0))));i<l
;C[6+i++]=g(E<c?E=c:0))c=g(D[3+i]=g()),W<c/I?W=c/I:0,C[3+i]=C[i]=c%=I;else if(m
==29)A=L();else{for(v-=2;m==4&v>0;v-=n+18){c=g(k=n=i=0);for(N=h+c/I*3+c%I;i++<I
;)for(n+=j=g();j--;)N->s[k++]=i;for(i=N->s[j=k=c=0];k<n;){while(N->s[k]==i)N->c
[k++]=c++;if(k<n)while(c*=2,N->s[k]!=++i);}for(;j<n;)N->v[j++]=g();}if(m==26){
for(O=g(i=0);i<O;i++)K[3+i]=K[i]=g(D[i]=g());g(L());return;}for(;v-->0;)for(j=g
(i=0)&7;m==27&i<y;a[j][i++]=g())v--;}}}}main(Q,h,V,Z,s){for(c=F;c--;M[c]=128)i=
972続き:03/05/12 23:08
c>>9,j=c/y%8,k[c]=cos(c/8%8*i*.4)*cos(c%8*j*.4)/(i*j?4:i|j?6:8);n();printf("P5"
" %d %d 255\n",w,e);for(Q=O;Q--;)for(i=l;j=i--;)for(c=3;D[Q]==D[2+j]&&c--;i=c)S
[Q+3*c]=C[j-1+3*c];for(W*=8,E*=8;f*E<e;f++)for(d=0;d*W<w;A&&++J>=A?T-=T&7+8,P[0
]=P[1]=P[2]=J=0:0){for(s=0;s<O;s++)for(Q=S[s],V=S[3+s],l=0;l<V;l++)for(h=0;h<Q;
h++){$=a[S[6+s]];Z=H(j=0,K[3+s]/I);if(Z>=0)for(P[s]+=gv(Z),memset(R,0,256),*R=*$
*P[s];++j<y&&(Z=H(1,K[s]%I))>0;R[z[j]-32]=gv(Z%I)*$[j])for(c=Z/I%I;c--;)R[z[j++
]-32]=0;for(Z=64;Z--;t[Z]=0);for(Z=F;Z--;)t[Z%y]+=R[Z/y]*k[Z];for(j=c=W/Q;j--;)
for(i=Z=E/V;i--;)M[F/4*s+(j+E*l/V+h/Q)*W+i]=t[j*8/Z*8+i*8/c];}Q=d++*W,V=f*E;for
(j=e-V>E?E:e-V;j--;)for(i=w-Q>W?W:w-Q;i--;G[V*w+Q+j*w+i]=s<256?s*(s>0):~0)s=j*W
+i,s=128+M[s]+M[s+F/2]*5742/F;}for(i=0;i<e*w;)putchar(G[i++]);}
973part3 の作品一覧:03/05/25 00:23
7行達成したもの

画像ビューア >>327>>359 >>413 >>420 >>430
ライフゲーム >>293 >>306>>311-312 >>345
grep >>838 >>863
lisp風 >>365>>355 >>370-374 >>390
スロット >>380>>396
rangecoder >>391
算術符号 >>424
さいたまべんち・テキスト >>458>>460 AA >>477 >>481>>485 >>489-496 >>504 MAC >>507
974part3 の作品一覧:03/05/25 00:23
EUC/SJISと改行 >>513
○×ゲーム >>527 >>529
囲碁 >>530
Brainfuck >>542-543 >>553 >>905-907 C言語変換 >>557-560
コッホ曲線 >>549-551
2ch符号 >>566
あっけない幕切れ >>578 >>584 >>587
ド肝を抜く >>588 >>591
ポートスキャナ >>634
LZW? >>723
975part3 の作品一覧:03/05/25 00:24
reflexive符号 >>727
円周率 >>731 ん? >>738
ソース2HTML >>752-788 >>829-832>>814 >>825-830 >>833
自己表示 >>791>>805
ブラックジャック >>812>>816
逃げる >>817
5-7行クエスト >>866-868
976part3 の作品一覧:03/05/25 00:33
未達成もの

grep >>332
lisp >>393 >>425
MD5 >>445 >>451 >>459
二段階ソート法 >>561-563
SOCKS4 Proxy >>741-742
マインスイーパ >>800 >>808 >>810
アナグラム >>861
JPEG >>915-917 >>938-939 >>971-972
977山崎渉:03/05/28 13:09
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
なんとなく移植途中だった>>504のさいたまベンチを完成。今更なのでここで。

Mac版AAさいたまベンチ
int rand(),sprintf(char*,const char*,...),x,y,j,i=1<<12;main(){unsigned c=
TickCount();char V[6],*p,m[]=" \ │ /  / ̄\  ─( ゚∀゚ )─  \_/ "
" / │ \ ";HideMenuBar();SetPortWindowPort(NewCWindow(0,2100,0,1,2,0,0,0)
);TextMode(0);for(;j++-i;){for(x=0;x<6;V[x++]=rand()) ;for(x=rand()%*(short*)
2106-30,y=rand()%*(short*)2104-40,p=m,RGBBackColor(V);*p;p+=12)MoveTo(x,y+=15)
,DrawText(p,0,12);}i*=j=60;c=TickCount()-c;sprintf(m,"%d.%03d saitama/s",i/c,i
%c*j/c);MoveTo(8,20);DrawText(m,0,strlen(m));while(!Button()) ;return 0;}

CarbonだけどLowMemを使ってるのでOS Xじゃ動かないと思う。
プロトタイプが中途半端なのはご愛嬌。
既に現スレで7行逝ってるのでこちらにひっそりup

/* 多少だがwarning対策したmd5 */
double sin(double),d;unsigned B,C,z,y,X[17],j=64,g,E[68],m,n,o,p;L(int z){X[y/4
]=g=g>>8|z<<24;if(++y>63)for(m=*E+=m,n=E[1]+=n,o=E[2]+=o,p=E[3]+=p;y=(g=++j/16)
<4;o=g)m+=X["@AE@"[g]-~(g*5&6)*j&15]+(g?g&2?o^(g&1?n|~p:n^p):n&p|o&~p:n&o|~n&p)
+E[j+4],z="GLQVEINTDKPWFJOU"[g*4|j&3]&31,g=n,n+=m<<z|m>>(32-z),m=p,p=o;return j
=~0;}main(){for(;j;E[j/4]=g=g<<8|34*j^1+j/8*493)d=sin(j--)*(~C+1.),E[j+4]=d<0?-
d:d;for(;z=~getchar();B+=!(C+=8))L(~z);for(L(128);y-56;)L(0);for(X[14]=C,X[15]=
B,L(y=64),L(y=64);++j<16;)printf("%02x",E[j/4]>>j%4*8&255);return!~puts("");}

/* warningを気にせず縮めたmd5 */
double sin(),fabs();unsigned B,C,y,X[16],j=64,g,E[68],m,n,o,p;S(){for(m=*E+=m,n
=E[1]+=n,o=E[2]+=o,p=E[3]+=p;y=(g=++j/16)<4;o=g)m+=X["@AE@"[g]-~(g*5&6)*j&15]+(
g?g&2?o^(g&1?n|~p:n^p):n&p|o&~p:n&o|~n&p)+E[j+4],y="GLQVEINTDKPWFJOU"[g*4|j&3]&
31,g=n,n+=m<<y|m>>32-y,m=p,p=o;j=~0;}L(c){X[y/4]=g=g>>8|c<<24;++y>63&&S();}main
(c){for(;j--;E[j/4]=g=g<<8|34*j^1+j/8*493)E[j+4]=fabs(sin(j+1.)*(~C+1.));for(;c
=~getchar();B+=!(C+=8))L(~c);for(L(128);y-56;)L(0);for(X[14]=C,S(S(X[15]=B));++
j<16;)printf("%02x",E[j/4]>>j%4*8&255);puts("");}
このスレまだ生きてる?
981805:03/07/10 09:02
>>805 を自分でコピーしてみると、連続する空白が
つながってしまってエラーになってしまうことが判明。
もう一度書き直しました。文字数を変えないようにすれば、
最後の文字列中のコメント部分は何書いてもOK。

class S{public static void main(String[]a){new S();}S(){while(8463!=(c=92*h(i++
)+h(i++))){System.out.print(s.substring(c,c+h(i++)));}}int i=191,c;int h(int i)
{return s.charAt(i)-35;}String s="\\class S{public static void main(String[]a"+
"){new S();}{while(8463!=(c=92*h(i++\n)+h(i++))){System.out.print(s.substring"+
"(c,c+h(i++)));}}int i=191,c;int h(int i){return s.charAt(i)-35;}String s=\"#"+
"$W#S&#X<#qr#p$$dE##$##$#$L%)$#o%%)$#MF##$#B$#qJ%)$#o%%)$$<l##$%)$%*$%)$#o%%)"+
"$%+o%)$#o%%)$%wn%)$#V$#W$~~/*_____________Save_me_as_'S.java'____________*/";}

982805:03/07/10 10:01
かつあげ。
>>982
次スレ立ってるんだから、あげるなよ・・・