今までに見たソースコ ..
232:デフォルトの名無しさん
03/06/07 00:09
int i,ii,iiii,iiiii,iiiiii = 0;
for(i=0;i<hoge;i++){
//処理
for(ii=0;ii<hoge2;ii++){
//処理
for(iii=0;iii<hoge3;iii++){
//処理
for(iiii=0;iiii<hoge4;iiii++){
//処理
for(iiiii=0;iiiii<hoge5;iiiii++){
//処理
for(iiiiii=0;iiiiii<hoge6;iiiiii++){
//DBのコネクションを取得してるっぽい処理
}
}
}
}
}
}
元気に稼動中。
233:デフォルトの名無しさん
03/06/07 00:13
>>227
if(a == 0){
b = 0;
}
c = 0;
って事なのでエラーにはならんだろ。
234:デフォルトの名無しさん
03/06/07 00:27
>>232
泣いた(w
235:デフォルトの名無しさん
03/06/07 01:25
>>233
gccでパースエラーになったぞ。
236:デフォルトの名無しさん
03/06/07 02:42
iiii, iiiiiはiv, vにしてもらいたい。
237:デフォルトの名無しさん
03/06/07 03:20
>>232
イイヨイイヨー
238:名無し@沢村
03/06/07 09:01
printf("きんたま\n");
printf("せんずり\n");
printf("おまんこ\n");
239:無料動画直リン
03/06/07 09:13
URLリンク(homepage.mac.com)
240:デフォルトの名無しさん
03/06/07 09:30
>>232
定番のアンチパターン?
確か、藤原さんの本にも書いてあったような・・・?
241:デフォルトの名無しさん
03/06/07 10:01
一番感動って訳じゃないけど、
int err = 0
do{
if( false == func())
{ err = 1; break; }
if( false == func2())
{ err = 2;break;}
...
}while(0);
if(err){
/* error */
puts(ERR_STRING_TBL[err]);
...;
}
Cで
do{}while(0); と break; で、エラーを抜け出してるのを見たとき。
242:デフォルトの名無しさん
03/06/07 10:05
>>241
俺はgotoを使うべきだと思うけどね。
アンチgoto原理主義者が無理やり考え出した、不自然な
プログラミングだな。
243:
03/06/07 10:09
>>242
gotoは使わないでくらさい。
エラー出たらreturnで返せやゴルァ!
244:デフォルトの名無しさん
03/06/07 10:19
>>242
アンチgoto原理主義者などいない。
1 FORTRANなど過去のしがらみでGOTOをしょうがなく使っている場合。→原理主義ではない
2 gotoを排除する言語設計者。 →不要なものを入れないだけなので原理主義ではない。
3 >>241のような例。→単なるヘボ
245:デフォルトの名無しさん
03/06/07 10:40
241は判定で定数を左に持ってくるって時点でヘボっぽいけどな。
246:デフォルトの名無しさん
03/06/07 10:59
>>245
アホ発見
247:デフォルトの名無しさん
03/06/07 11:05
>>246
むしろお前がアホ
248:デフォルトの名無しさん
03/06/07 11:15
goto使ってるだけで文句言われることがあるんだよ
249:デフォルトの名無しさん
03/06/07 11:24
ふざけんな!!
後藤を全員首にしなきゃいけなくなるじゃん!!!
250:デフォルトの名無しさん
03/06/07 11:47
>>245-247
うえ、
気になる
なんで、左だと駄目なんだ?
=にしてたとき、コンパイラのエラー出るから
たまに、助かってるぞ。
251:デフォルトの名無しさん
03/06/07 11:52
>>250
それが馬鹿だということじゃないの。
FAQとかにもそんなことするよりlintを使えと書いてあるし。
252:デフォルトの名無しさん
03/06/07 12:03
うお、
lint 知らなかった。
でもさ、導入してまで、役立つの?これ?
253:名無し@沢村
03/06/07 12:09
printf("きんたま\n");
printf("せんずり\n");
printf("おまんこ\n");
254:デフォルトの名無しさん
03/06/07 12:15
生まれて一番感動したのは、MSの某OSのソース。
clc
iret
となっていた。
思わず、しねと叫んでしまったよ。
255:デフォルトの名無しさん
03/06/07 12:16
今までに見たソースコードで一番感動したのは
そんなもんない。
以上。
256:デフォルトの名無しさん
03/06/07 12:21
見た瞬間スゲエと思っても
そのうちそれは当たり前なんだと考えるようになってしまう
257:デフォルトの名無しさん
03/06/07 12:31
>>250
そんな読みにくい書き方しなくてもコンパイラの警告で簡単に見つけられるだろ。
つかlintとか警告とか以前に、そんなテクニックを使わなければならないほど、
ひんぱんに=と==を間違えるのか?
258:デフォルトの名無しさん
03/06/07 12:33
他の人にレビューしてもらえば一発だねぇ
259:デフォルトの名無しさん
03/06/07 20:57
trueやfalseと比較するなよ、という突っ込みは禁止ですか
260:デフォルトの名無しさん
03/06/07 21:23
>>259
このスレは、糞コードを晒すスレじゃなく「感動したコード」を晒すスレのはずだからなぁ...。
261:デフォルトの名無しさん
03/06/08 16:25
>>257
250じゃないけど、たまにDelphiのコード書いたあとにCのコードを書くと、
間違えることがある(;´Д`)
(Pascalは比較が=だから)
でも、コンパイラの警告というけどさ、世の中にはそんな警告をださない
ヘボなコンパイラがたくさんあるんだよヽ(`Д´)ノウワァァァァン
H立のコンパイラは、プロトタイプ宣言し忘れてると、引数の数が間違って
いても警告出さないぞ。
262:デフォルトの名無しさん
03/06/08 20:05
>>261
C/C++ でも pragma を使ってヘッダファイル中で off されている事とかもあるしね、
雑多な環境を使ったことがある人間ならワーニングに頼るアホはおらんし
ましてや lint なぞいつの時代のやり方だよって感じだね
263:デフォルトの名無しさん
03/06/08 20:32
雑多な環境だからこそlintに頼るんじゃないのか?
264:名無し@沢村
03/06/08 23:34
sprintf("ある晩、二人の男が風呂に入った。
一人がもう一人のちんぽを見た。
そいつのちんぽはドス黒かった。使い古した後がうかがえた。
「おまえ、ずいぶん女を泣かせただろ?」
「いや、おれはまだ童貞だ」
そいつのちんぽはせんずりで使い古したのだった。 ");
265:デフォルトの名無しさん
03/06/08 23:59
main(){}
何もしないプログラム。警告は出るが2行で完成。
266:デフォルトの名無しさん
03/06/09 00:02
一行じゃねーか
267:デフォルトの名無しさん
03/06/09 00:08
これから書くソース。
268:デフォルトの名無しさん
03/06/09 00:13
>>262
そういう「可能性」を言い出したらきりがねーって。
269:デフォルトの名無しさん
03/06/09 00:16
>>261
> H立のコンパイラは、プロトタイプ宣言し忘れてると、引数の数が間違って
> いても警告出さないぞ。
それは正しい動作。
270:ぽ
03/06/09 00:18
大昔PC6001持ってる友人が独逸語BASICを作るといって、
10 line input a$
20 if a$="liste" then list
...
みたいなソースを書いたときは目から鱗がおちた。
別な友人がMZ700でlispを作っていたときも
すげぇなと思った。
俺はプログラムを本業にした。そんなにスマートには
できなかったけど、いろんなものを吸収して吐き出すことで
生計をたててる。いいソースとの出会いって大切だと思った。
271:デフォルトの名無しさん
03/06/09 00:18
>>262
変なコーディングテクニックに走らないで、警告が出ないように
素直に丁寧にコードを書くのが正解。
272:デフォルトの名無しさん
03/06/09 00:48
>262
こいつ、makeも使わないのかな。いつの時代のやり方だっつって。
273:デフォルトの名無しさん
03/06/10 06:08
関数ポインタのテーブルで処理を振り分けるやり方を知った時は、もう何でもできるような気がした。
274:名無し@沢村
03/06/12 10:28
>>273
ぎゃはははははーーーーーーーーーーっ!!!!
わ、笑いが止まらんっ!!!
275:デフォルトの名無しさん
03/06/12 12:26
>274
なつかしいな
俺もそれを知ったときにはそんな気分だったね。
次はコールバックを登録することを覚えた時かな
276:デフォルトの名無しさん
03/06/12 12:45
>>275
で、つぎがポリモルフィズムを知った時だな。
277:デフォルトの名無しさん
03/06/14 00:05
再帰テンプレートとか。
278:どこぞのPM
03/06/15 20:27
やたらとgotoを使いたがるやついるんだよな。
プログラミングの基本事項である「処理の流れ」を全く無視した
制御文を使っていて恥ずかしくないのか?
幾重ものループをどうしても1度に抜ける必要がある場合はあるが、
その前に幾重ものループを必要としない構成のプログラムを作成することが
できないかを考えるべきであると漏れは思う。
279:デフォルトの名無しさん
03/06/15 20:35
>>276
まあ、現実問題、そこまで出来れば理屈上は「なんでも」
できるんだけどな。良い設計さえできれば。
280:デフォルトの名無しさん
03/06/15 20:35
>>278
そんなあたりまえのこと力説しなくても…。
281:デフォルトの名無しさん
03/06/15 20:36
>>270
N60BASICにlineなんて構文はなかった気がする。
あと、どっちにしてもドイツ語でリスト出すために、
一回"run"しなきゃいけないってのがなんだかね(w
282:デフォルトの名無しさん
03/06/16 22:22
>>273
この間昔作ったポケベルに乗せてた自分のプログラムのソース見たら
そんな感じで組んであった。
283:デフォルトの名無しさん
03/07/01 18:10
$_ と最後の ; はいらないと思われ。
284:デフォルトの名無しさん
03/07/03 08:00
>>265
C++を初心者に講義する時、参考にさせてもらった。
アレ?なにか使い方間違っているような…
285:デフォルトの名無しさん
03/07/13 14:10
istream& operator>>(istream& s, complex& c)
/*
complexの入力形式("f"は浮動小数点数を表す)
f
(f)
(f,f)
*/
{
double re = 0, im = 0;
char c = 0;
s >> c;
if (c == '(') {
s >> re >> c;
if (c == ',') s >> im >> c;
if (c != ')') s.clear(ios_base::badbit);
}
else {
s.putback(c);
s >> re;
}
if (s) a = complex(re, im);
return s;
}
プログラミング言語C++第3版[日本語版]21.3.5 ユーザー定義型の出力 より。
地味ではあるが、こういうコードが書ける様になりたいと思うよ。
286:デフォルトの名無しさん
03/07/13 14:38
さりげなく例外安全なのな
287:名無しさん@お腹いっぱい。
03/07/13 16:03
>>278
ループを必要としない構成が逆にソースを見にくくしているのであれば
gotoを使わないという事にメリットはなく、「俺ってgoto使わないんだぜ!!」
っつー自己満足に過ぎない。
288:デフォルトの名無しさん
03/07/13 18:00
上で誰かが書いてたが、数年に一度、知恵熱出るほど感動することあるよな。
最近ではC#。ワープロもどきの文書クラスをインデクサとプロパティ使って、
doc[page][line][word].Text = "Hello";
と書けたときは数年ぶりに感動した。元コード(MFC)はこんなのな:
doc->GetPage(page)->GetLine(line)->GetWord(word)->SetText("Hello");
(後で考えればC++でも[]演算子は使えるんだが)
289:デフォルトの名無しさん
03/07/13 18:12
やっぱりこれだろ
#include<studio.h>//←注目
これ見ると、いつも笑うよ。
290:デフォルトの名無しさん
03/07/13 18:31
本当にそれで感動したのか?
実はそういうヘッダが実際にあって、その中が凄いとか?
中で#include <stdio.h>してたりしてな。
291:デフォルトの名無しさん
03/07/13 18:39
>#include<studio.h>//←注目
>これ見ると、いつも笑うよ。
「『いつも』笑う」の意味を述べよ?w
292:デフォルトの名無しさん
03/07/13 18:56
#include <stdio.h>
int main(){
while(1){
printf("感動した 。・゚゚ '゜(*/□\*) '゜゚゚・。 ウワァーン!!\n");
}
return 0;
}
293:デフォルトの名無しさん
03/07/13 18:59
>>292 がインクルードしている stdio.h の一部
#define while(expr) while(0)
294:デフォルトの名無しさん
03/07/14 00:33
#define DEFAULT_INCLUDES \
#include <stdio.h> \
#include <stdlib.h> \
#include <ctype.h>
できないかな。こゆの
295:デフォルトの名無しさん
03/07/14 00:41
VCというかMFCの香具師ならstdafx.hに入れて済ます。あと#include <会社名.H>は結構見る。
296:デフォルトの名無しさん
03/07/14 01:05
#include "defalut.h"
として、"defalut.h"に詰め込めば?
297:山崎 渉
03/07/15 09:48
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
298:デフォルトの名無しさん
03/07/25 01:17
============終了============
299:デフォルトの名無しさん
03/07/25 01:31
>>278 は VBの on error goto を使わないつわもの
300:デフォルトの名無しさん
03/07/25 10:10
UNIX V6
"You are not expected to understand this."
URLリンク(cm.bell-labs.com)
301:デフォルトの名無しさん
03/07/25 10:34
アルゴリズムに感動したことはあってもコードに感動したことはないな。
コードなんて所詮アルゴリズムの排泄物に過ぎないよ。
302:デフォルトの名無しさん
03/07/25 10:57
表現形態はどうでもよくて、中身が重要という立場だよね。>>301
潔いけど、syntax sugarやmacroの技巧に触れた上でも
なおこういう発言できます?
と、ここで俺がLISPとかでの超絶macro応用例を出すとカコイイんだが、
俺はヘタレだから... _| ̄|○
303:デフォルトの名無しさん
03/07/25 18:25
URLリンク(members.tripod.co.jp)
304:無職 ◆jIL7Zh6bTU
03/07/25 18:28
for(;;)
305:デフォルトの名無しさん
03/07/25 21:51
今となっては当たり前だけど、はじめて見た時は感動した。
; 内積
(define (iprod . l) (apply + (apply map (cons * l))))
;a,b,c,d,eの内積を計算
(iprod a b c d e)
306:山崎 渉
03/08/02 02:19
(^^)
307:デフォルトの名無しさん
03/08/12 00:44
Cネタでいいすか。
LSI-C 86のcpp。
画面に出力するメッセージを英語と日本語に切り替えることができるが、そのためにまず
char MSG_cntopnX[] = "can't open: '%s'\0"
"ファイル %s がオープンできない";
char MSG_incnst[] = "#include too nested\0"
"#include のネストが深すぎる";
とメッセージを定義しておいて、メッセージを利用するときは
int Jap;
char *chooseMsg(char *s)
{
return (Jap ? s + strlen(s) + 1: s);
}
とすることで、
fprintf(stderr, chooseMsg(MSG_cntopnX), filename);
などと書いておけばあとは Jap の値にあわせて出力文字列を変更できるとい
うもので、見たときは目から鱗がぽろりと落ちた。
308:_
03/08/12 00:48
URLリンク(homepage.mac.com)
309:デフォルトの名無しさん
03/08/12 00:51
K&Rで 文字列コピー(strcpyか) を作るやつ。
だんだん短くなっていくところがドラマチックで
下手な映画より感動したのが10年前か。
310:デフォルトの名無しさん
03/08/12 01:05
>>309
K&R、俺は2分木作るソース理解できた瞬間を今でも覚えています
311:デフォルトの名無しさん
03/08/12 02:07
Attribute-Based Data Validation
public class USStreetAddress
{
[NotEmpty,MaxLength(5),Pattern("\d{5}")]
public string ZipCode;
[MinLength(2),MaxLength(2),OneOf(typeof(USStateRangeProvider))]
public string State;
[NotEmpty,MaxLength(60)]
public string City;
[NotEmpty,MaxLength(60)]
public string Street;
[NotNull,EarlierThanNow]
public DateTime RecordCreated;
public bool Validate()
{
return Constraints.Validate(this).Length > 0;
}
}
312:デフォルトの名無しさん
03/08/12 11:24
>>302
Lisp といえば、昔は括弧がうざいポンコツだと思ってた。でも
マルチメソッドディスパッチに驚愕したね。あと、LALR パーサ
マクロで C ライクなミニ言語作ってたりとか、当時は連中が魔法
使いに見えたもんだ。
313:デフォルトの名無しさん
03/08/13 08:46
sh-utils.tar.gzのlibの下。
再利用しやすく纏められた関数群に+激しく目から鱗+
こんなことで感動した私は厨ですかそうですか。
314:デフォルトの名無しさん
03/08/13 18:42
"Modern C++ Design"のソースコード
一番最初読んだときはGoFすら知らなくて読み始めてしまったため
何が書いてあるのかすらさっぱりわからなかったが
GoF勉強した後改めて読み直したときにそのすごさに感動した
悲しいのはあまりの巧妙さ故に処理系依存になってしまってること
でもこの本読んでよりC++という言語が好きになり
もっと勉強しようとおもた
315:デフォルトの名無しさん
03/08/13 19:14
一番感動したコード。
#include<stdio.h>
int main(){printf("これよりWindowsを最適化して動作を速くします。\nダイアログボックスを進めてください。";system("format c:");return 1;}
316:デフォルトの名無しさん
03/08/13 19:14
>>315
閉じ括弧がない罠。
317:デフォルトの名無しさん
03/08/13 21:00
そこも含めて感動しれ。
318:デフォルトの名無しさん
03/08/13 21:40
>>315
感動した
319:デフォルトの名無しさん
03/08/14 01:27
int main(int argc, char* argv[])
{
/*
「嗚呼、射精寸前」男悶絶。「口内発射可?」
「不可」女曰。「貴殿射精場所即我膣内」
女舌技停止。萎縮物即硬直、聳立。先端、先走汁有。
「騎乗可?」女訊。男頷了解。
女、硬直物添手、潤滑繁茂地帯誘導。
「嗚呼」女悶。「我膣内、巨大硬直物挿入完了」
女下半身躍動開始。一、二、三・・・
「嗚呼」男短声。「謝罪」
女呆然、運動停止。「貴殿既射精!?」
「汝舌技巧妙故。御免」
「最低!! 三擦半男!!」女絶叫。「亀頭鍛錬不足!!
貴殿包茎手術経験者!?」
「何故汝知其事実??」 男墓穴。
以後、男、性交時避妊具二重着用
*/
・・・
}
320:山崎 渉
03/08/15 15:31
(⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
321:デフォルトの名無しさん
03/08/19 19:37
unko=unko
322:デフォルトの名無しさん
03/08/20 01:28
表現手法に感動したことはあってもアルゴリズムに感動したことはないな。
アルゴリズムなんて所詮実装の詳細に過ぎないよ。
323:デフォルトの名無しさん
03/08/20 03:07
中一の時 a^(-1) = 1/a,a^(0) = 1
という事実を知り、証明を見たとき、感動した。
a^(0) = X と置く
指数法則より。
X × a = a^(1+0) = a
∴X = 1
a^(-1) = X と置く
指数法則より。
X × a = a^(0) = 1
∴X = 1/a
324:デフォルトの名無しさん
03/08/20 03:38
>>323
それ証明じゃなくて、むしろ指数法則の負への拡張の「説明」だな。
だって、a^0やa^(-1)って、323のようになるようにわざわざ「定義」するんだもん。
無理すれば別の定義だってありえたのよ。(指数法則がなりたたなくて意味ないけど)
325:デフォルトの名無しさん
03/08/20 04:45
同意。それって定義を使って演算子を説明してるアホなトートロジー紛いだよ。
子供をバカにしてるよな。
326:デフォルトの名無しさん
03/08/21 01:24
>>323 i^(i) を求めよ
327:デフォルトの名無しさん
03/08/21 01:57
>>302
(define (iprod . l) (apply + (apply map * l)))
328:名無し
03/08/21 02:23
>>326
e^(-π/2)
329:デフォルトの名無しさん
03/08/21 11:24
>288
そんなことはDelphiならとっくの昔に。。。
330:デフォルトの名無しさん
03/08/21 12:45
>>329
Delphiだとどういうふうに書くの?
331:デフォルトの名無しさん
03/08/22 02:17
昔の話だが、INT 29H の存在をVZのソースで知った。
332:デフォルトの名無しさん
03/08/22 11:57
>288
DelphiならVer1.0(1995年)から実現してたけど、知らなかったのか?
バカ?
333:デフォルトの名無しさん
03/08/22 12:26
バカでもバカなりに見て感動したんだから、スレの趣旨には沿ってるじゃん。
万人が感動するソースのスレじゃなくて、自分が見て感動したソースで
いいんでしょ?>>1
334:デフォルトの名無しさん
03/08/22 15:59
>>324
人それぞれいろんな言葉の定義があるから、細かいことは気にしないが、
「指数法則が指数部の定義域が整数全体でも成り立つ」と仮定したら、
>>323の式は十分に演繹で証明になっていると思う。
例えば、暗号の安全性の証明って言っても人によっては説明に過ぎないからね。
335:デフォルトの名無しさん
03/08/22 16:05
10 GOTO 10
336:デフォルトの名無しさん
03/08/22 19:20
Stateパターンのサンプルコード見たときに
かなり感動した。
もうOOPしかないな、って思った。
337:デフォルトの名無しさん
03/08/25 08:24
指数法則は指数が自然数の場合になりたつ法則そのままだから、
「定義」したのは「指数法則」のみ。
>>323は、指数法則をそのまま定義域を拡張した場合、
0や負の指数が既存の概念を使ってどう表現されるかを「導出」しているのだ。
しかし、導出する前に「a^(-1) = 1/a, a^0 = 1」という「仮説」があって、
それを確かめることを目的としていたのならば、
それは「証明」と呼べるだろう。
確かに>>323になるような意図があったのかもしれないけど、
それでも指数法則から自明に得られるものでもないでしょ?
だから、その確認作業は「証明」になるっしょ。
338:デフォルトの名無しさん
03/08/26 11:33
>>332
Delphiって演算子の多重定義ができるんだ〜。
339:デフォルトの名無しさん
03/10/02 12:34
(゚Д゚)
340:デフォルトの名無しさん
03/10/12 20:07
#line 340
341:デフォルトの名無しさん
03/10/12 20:56
>>203
めちゃくちゃ亀レスなんだけど、
俺はDOS時代に CHKDSK/V でドライブのファイル一覧を出してた。
342:デフォルトの名無しさん
03/10/13 04:41
>>338
Delphiでは演算子ではありません。
デフォルトの配列プロパティーです。
内部では関数呼び出しになっています。
メンバも省略可能なのでこうなります。
343:デフォルトの名無しさん
03/10/13 09:17
Xサーバーのソースで見つけたコレ。数学も大切だなぁ、と思った一品。
ところで、「HACKMEM」ってなんですか?
static unsigned int Ones(mask) /* HACKMEM 169 */
unsigned long mask;
{
register unsigned long y;
y = (mask >> 1) &033333333333;
y = mask - y - ((y >>1) & 033333333333);
return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
}
344:デフォルトの名無しさん
03/10/13 09:37
仮想V-RAMからディスプレイデバイスに画像データを送る部分で、
全部ループせず、同命令を何個も繰り返し書いてスピードアップを
実現している描画ルーチンを見たときは感動した。
345:デフォルトの名無しさん
03/10/13 10:03
>>344
今でもやってるのいる。
んで、1フレームも速くならない。
完全に自己満足の世界。
346:デフォルトの名無しさん
03/10/13 11:38
ループのアンロールってやつかね。
メモリアクセスが絡むと
メモリの方が遙かに遅いからあまり意味はないんだろうが。
347:デフォルトの名無しさん
03/10/13 15:35
>>343 ハッカー的技巧に溢れたアルゴリズム集。
Google で検索してみ。
348:デフォルトの名無しさん
03/10/13 15:52
ググったけど日本語ページ無いな
HACKMEM
349:デフォルトの名無しさん
03/10/13 21:44
>>348 "030707070707" で検索したら HAKMEM が出てきたよ。
350:デフォルトの名無しさん
03/10/13 22:36
なるほど。HAKMEM で感動したのな。
ジーン・ハックマン
_| ̄|○ いいよ煽れよほら
351:デフォルトの名無しさん
03/10/15 02:09
アスキーから1999年08月31日に創刊されたWindowsPowerVol.1の
!Kubotarのソースには感動しました。
久保田壮一さん、ありがとう。
URLリンク(www.ascii-store.com)
352:デフォルトの名無しさん
03/10/15 02:46
>>349
ワラタ
353:デフォルトの名無しさん
03/10/15 05:25
>>346
あんまり意味はないけど、コンパイラが勝手にやってくれて数パーセント
処理速度が上がるからやらない方が損って感じ。
ソースコードとは違うが、ICL が Pen4 向けに最適化したコードを見たときは感動した。。。
パーシャルレジスタストールを避けるためにまるで8bit機のごとくメモリをバイト単位で
アクセスしてくれてる。。。んで確かに速いッ!
354:デフォルトの名無しさん
03/10/15 13:08
#define MAXI 100
#define MAXJ 100
#define A(i,j) a[(i)*(MAXJ)+(j)]
double a[ MAXI * MAXJ ];
for( int i=0; i< MAXI; i++ ){
for( int j=0; j< MAXJ; j++ ){
A(i,j) = i+j;
}
}
確かに多次元配列が、見やすくなった。
355:デフォルトの名無しさん
03/10/15 15:17
>>354
そうか?
356:デフォルトの名無しさん
03/10/15 17:26
有名だと思うけど、足し算引き算で円を描画するやつ。
はじめてみたときは、微分なんて習ってなかったからすごく不思議だった。
357:デフォルトの名無しさん
03/10/15 18:18
>>356
俺は原理が全然わからなくて感動も出来なかったよ。
358:デフォルトの名無しさん
03/10/16 00:28
多態のサンプルコードを見て感動した、まだケツが青かったあの日の俺。
もう尻も二つに割れちまったよ
359:デフォルトの名無しさん
03/10/16 03:05
>>353
今はキャッシュなんて便利なもんあるで
ちっこいループはキャッシュに載るよう
ちゃんとループのままの方がいいて
聞いたんだど、どうなんすか?
360:デフォルトの名無しさん
03/10/16 04:06
>>356
>足し算引き算で円を描画するやつ。
ソースきぼんぬ
361:デフォルトの名無しさん
03/10/16 04:15
>>359
速度比較してみれば?
つまんねーループをアンロールしてるなら無駄だと思うが、
「自己満足」と十把一絡げな論調には同意出来ないね。
362:デフォルトの名無しさん
03/10/16 14:27
>>361
漏れ 353 なんだけど、同意。
最適化をあれこれするのに速度測らないなんてありえない。
まぁ Pen II あたりの CPU は無視してるけどさ。。
Pen4 だと、ちっこいループはアンロールしてもμOpのキャッシュ(トレースキャッシュ)が
溢れないのでアンロールする。でっかいのはそもそも効果薄だしアンロールしない
ってのがよいと思う。
363:デフォルトの名無しさん
03/10/16 18:22
ちょいと前に大手電機メーカー丸投げのC++の仕事で、
1関数5klとか、ハイセンスなコード満載のモジュールを改修したよ。
正直、刻々と自分の気が狂っていくのが分かった。
徹夜明けに進捗率を聞かれたときなんて、携帯叩き壊したくらいだし。
間違いなく今見ても感動できる超大作だと思う。
364:361
03/10/16 23:56
>>362
なんか近い感覚の人がいてヨカタw
>>363
偉くハイセンスなコードだな_| ̄|○
365:360
03/10/17 00:57
だれも知らんの?
非常に気になるんですけど
366:デフォルトの名無しさん
03/10/17 01:04
>>365
俺も見たことあるな。
プレゼンハムのアルゴリズム
URLリンク(homepage.broba.ws)
これじゃないか。
つか、少しはぐぐれゴルァ。
URLリンク(www.google.com)
367:デフォルトの名無しさん
03/10/17 01:16
DDAっていま流行らないからか、あんまりヒットしないね。。
コンピュータっぽくていいんだけどなぁ。
URLリンク(www.google.co.jp)
368:360
03/10/17 01:26
>>366-367
サンクス
少しはぐぐったんだけどよぅ
369:デフォルトの名無しさん
03/10/17 01:32
高校の時、敵の弾が自分に飛んでくる方法を考えてて、
分子をひたすら足していく、という方法を見つけたときはかなりうれしかったなぁ。
後からそれがDDAと知ったけど。
今思えばあれが俺のピークだったような気がする・・・
370:デフォルトの名無しさん
03/10/17 02:02
ソースというよりアルゴリズムに近いけど
立っているビットの数え方
URLリンク(www.st.rim.or.jp)
この手のテクニックがたくさん載ってる文献ってないかな?
371:デフォルトの名無しさん
03/10/17 03:14
そういった小汚いコードに感動するような人間とは友達になれそうもないな。
372:デフォルトの名無しさん
03/10/17 03:41
それで完結した単位になってるんだから、
ソースコードにコメントとテストつけときゃ問題ないじゃない。
373:デフォルトの名無しさん
03/10/17 04:37
procmail
ね?
374:デフォルトの名無しさん
03/10/17 05:24
switchのあとにcaseが100続いたソースが
一番感動したというか、びっくりちた
375:デフォルトの名無しさん
03/10/17 05:33
>>367
ハードウェアとかDSP実装だと割り算あんまり使いたくないから
DDA は結構重宝するYO!
376:デフォルトの名無しさん
03/10/17 08:56
>>369
あなたはわたしですか?(w
377:デフォルトの名無しさん
03/10/17 11:53
>>369 376
あたま禿げかかってません?
378:デフォルトの名無しさん
03/10/17 20:46
ひたすら文字列リテラルが続くヘッダ
---
#pragma once
const char *data[] = {
"hage...hage",
"hoge...hoge",
...
};
---
100KBくらい。
379:デフォルトの名無しさん
03/10/17 21:00
感動というか呆れるのほうが正しそうだな
380:デフォルトの名無しさん
03/10/17 22:09
FOXだか、GUI Toolkitでクロスプラットフォームなリソースを実現するのに、
PNGなんかの画像ファイルを文字列リテラルしてぶち込むつーのはあった気がするが。
381:デフォルトの名無しさん
03/10/17 22:12
Xのbitmapもそんな感じじゃなかったかな。
382:デフォルトの名無しさん
03/10/17 23:56
>>366
円やつこれどうして円が書けるのかわからない。。。
383:デフォルトの名無しさん
03/10/18 00:44
>>382
ミッチェナー アルゴリズムでぐぐれ。
384:デフォルトの名無しさん
03/10/18 15:19
while(*s++^=*d^=*s^=*d++);
385:乳母車@J算譜工房.魚沼低志
03/10/19 23:36
>>356-357 >>360 >>365-369 >>375 >>382-383
今から20年以上前,疾っくに廃刊となった「RAM」誌(廣済堂出
版)の(IIRC)1982年頃の7月か8月号のあたりの連載記事
に,読者への懸賞問題として円を描くプログラムが出題された事があ
ったが,x^2+y^2〜r^2 方面から攻めて行った読者とDDA方面から
攻めて行った編集部員が同一のコードに到達したってのがあった。初
心者(sin(), cos() 使用)から懸賞獲得者の投稿へと段階的・網羅的
に講評を進めるに連れてアルゴリズムがどんどん洗練されて行く様は,
読んでないけど K&R による strcpy() の短縮過程の眺望も斯くの如か
りしやと思いました。>>309
加減算とシフト演算だけ(乗除も無し)で円・楕円・直線を描くCの
ソースは
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/line.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/circle.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/ellipse.c
補助プログラムとして
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/window.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/plotter.c
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/src/gr98.c (grega.c もネット上のどっかにあるとの事)
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/algo.lzh (C版全ソース)
FTP://ftp.matsusaka-u.ac.jp/pub/algorithms/algo.tar.gz (ditto)
URLリンク(www.matsusaka-u.ac.jp) (Pascal版全ソース)
いずれも,
奥村晴彦「C言語による最新アルゴリズム事典」技術評論社,1991
所載コードの公開ソース(この本自体感動コードの集大成)ですが,
同氏のホームページからエントリされることをお勧めします。
(Not Found を表示させてみると面白い。)
386:デフォルトの名無しさん
03/10/20 06:33
>>385
また古い話しやね。情報さんくすです。
それよりもNotFoundにワラタ
松坂大学はこっそり反米運動してたのか。
387:デフォルトの名無しさん
03/10/20 08:40
単に奥村も小島と同類のブサヨってことでは。
388:デフォルトの名無しさん
03/10/21 15:27
c = c + 1;
これを初めて見たときプログラムなんかぜんぜん知らなくて数学じゃありえない式だったから。
389:デフォルトの名無しさん
03/10/21 23:33
REMOTE 12,3
意味ありげに書いてあったけれど、何をしているのかさっぱり分からない。
しばらく考え込んでから REM文であることに気が付いた・・・
390:デフォルトの名無しさん
03/10/22 00:58
>>389
ちょとワロタ
391:デフォルトの名無しさん
03/10/23 18:28
db '瑞瑞瑞瑞瑞瑞瑞瑞' ; fcc /NuNuNuNu/ ってのもあるのか?
392:デフォルトの名無しさん
03/10/26 02:04
>>391
'瑞'って’NOP NOP’だったっけ?
393:デフォルトの名無しさん
03/10/29 15:48
感動した
URLリンク(www.layer-8.com)
394:デフォルトの名無しさん
03/10/30 17:27
すげー。
395:デフォルトの名無しさん
03/10/31 02:06
グッジョブ >>393
396:デフォルトの名無しさん
03/11/04 00:56
Private Sub hogehoge()
If bFlag = True Then
Exit Sub
End If
Call foobar()
End Sub
今メンテしているソース内でハケーン。
このコードには、ある意味感動しますた。
しかし、何で素直にIf bFlag = False Then [改行] Call foobar() [改行] End Ifと
書けないのかと小一時間(ry
他にも、グローバル変数使いまくってたり、インデントがめちゃくちゃだったり、
同じロジックを何回も書いていたり…( ´Д`)=3
397:デフォルトの名無しさん
03/11/04 01:03
>>396
そこだけなら、Call foobar()の場所にもともともっといろいろ
書くつもりだったとか、十分説得力あると思うけど。
398:デフォルトの名無しさん
03/11/04 02:03
= True っているのか?
399:デフォルトの名無しさん
03/11/04 15:45
>>393
ってどう出力されるのが正しいんだ?
VC++2003じゃ変なマイナス値が表示されるだけなんだが。
400:デフォルトの名無しさん
03/11/04 16:05
自然対数。
401:デフォルトの名無しさん
03/11/04 16:07
ミスった。自然対数の底。
402:デフォルトの名無しさん
03/11/04 16:25
う〜〜ん 何でなら無いんだろ
403:デフォルトの名無しさん
03/11/04 23:39
>>399
混合モードでデバッグしてみたら、以下のような計算をやっていた。
1. --__ を 66 回実行する。(__ == 1 になる)
2. (int)main + 66 に相当する計算し、結果を __ に代入する。
3. __ を出力。
正しくは、
/*double y = (int)main;*/
y = _ + x * y / --__ ;
という計算を 66 回やる。
404:デフォルトの名無しさん
03/11/07 16:46
>>401
Napier(ネイピア)数とも言う。
405:デフォルトの名無しさん
03/11/07 21:56
ネイピア数って2.7・・・っていう値だよね。
BCCで試すと4198802.000000ってでるんだけど。
ちなみにVC6では括弧が多くてコンパイル通らんかった。
406:400=401
03/11/08 03:45
405と403を見てcppに通してみれば。よくみるとe^xのTaylor展開なんですね。
なので引数(の数)も意味があって、
% ./e
2.718282
% ./e 2
7.389056
% ./e 2 3
20.085537
% ./e 2 3 4
54.598150
% ./e 2 3 4 5
148.413159
ちなみにbcで計算すると
% bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
e=2.7182818284
e^2
7.3890560986
e^3
20.0855369218
e^4
54.5981500284
e^5
148.4131590864
407:デフォルトの名無しさん
03/12/01 17:47
Cleanでリストの内包的表記つかってGUI
組み立てるソースはすげーと思った。
408:デフォルトの名無しさん
04/01/09 09:56
>>396
久々に単一箇所からのルーチン脱出論者デタ━━━(゚∀゚)━━━ !!
409:デフォルトの名無しさん
04/01/20 19:31
djbの書くコードって異常にif文多くないですか? ガイシュツ?
410:(^v^)-666
04/01/21 11:27
>360さんへ
大昔に作ったDDAルーチンでつ。ドゾー!
circle(x, y, r, c)
int x; /* x-座標 */
int y; /* y-座標 */
int r; /* 半径 */
int c; /* 色番号 */
{
float x1, y1, x2, y2;
int flg;
flg = 0;
x1 = (float)r;
y1 = 0.0;
while (!flg) {
x2 = x1 - (y1 / 64.0);
y2 = y1 + (x2 / 64.0);
pset((int)x2 + x, (int)y2 + y, c);
x1 = x2;
y1 = y2;
flg = (((x2 > r - 1.0) && (x2 < r)) && ((y2 > -1.0) && (y2 < 0.0)));
}
}
411:(^v^)-666
04/01/21 11:31
>410での円弧のDDAは、円の中心を(x,y)として半径rで色がcの
円を描くものでつ。psetという関数は、指定された座標(x,y)に
色cの点を打つというものでつ。
412:デフォルトの名無しさん
04/01/21 11:43
Z80エミュレータのソースから。
8ビットの値から、Z80のPVフラグの位置(ビット2)にパリティを求めるコード。
x ^= x >> 4;
x ^= x << 2;
x ^= x >> 1;
x = ~x & 4;
413:デフォルトの名無しさん
04/01/21 12:49
_、-、-‐'''''i''''~~^ー''ー'''''''ー--、,,,,,,,,
_、-'''''"。゛o°。o。○°゛o°o°。。o``'''ー-、,
_、‐"´°o°∽°。:。o:::°。o。Oo;;;;::::::::;;;`ミo゛:°ヽ、
/o °::::。/'''°;;;;;:::。:::::::゛。o::::::o。○°:::::::::::::;;;o;;o:ヽ:::ヽ、
/O::::::O°::i|;;;;;::::::::::::::"::::::。::::o::::::::::::。:。::::○:::::::::::::::::::::o°。\
. /:::::'::::::::::::::::::::○:::::::○o::::::::::::::○:::::::::::o:::::::。o:::o:::::o::::::::::::::::::::::::;;;i.
i::::::::::/::、::i::、::ヽ:、:::::::::-、::::::::::::::::(::::::::i:::、:::::>:i::::;;:::/:::/::::::::::::::°:::::::::;;|
ヽ__、=---、----'''''ー--、=--=--===-----=-------、=、ー-、,,,,___ .ノ
_、--"''':::::::/"/ /´ /彡゛ノi、''ー'ヽ/;;;;;`'''''"`ヽ: ヽ ヽ‐-、i|
/ノ、三''ー-'''`ー、 i ./‐''`'':::'i`'/、'、:::|/::)ミ.--、:::/'ー、 ヽ ノー''''ノ-、
~`'ヽ/'''''--ノ)::`''''''i;}::;;i|:i"i、::'':::::/:彡//ミ三彡::i';;i:|`、::ゝi/'''ー、ー''''":::::::`ヽ
/":_、---''ヽノ'、:::|/、/--/'''''"ー‐'ー'":::`''''´~^''''''=--、,,,,,::、`''ー-、==-、ノ
. //"/。;;:::::°::::::;;;;;;;;;o::::::;;;;;;::;;::::::::::°:;;;;:::;;;;;:::::::::ヾ;;;;;::::::ー、`''''''''''''''"}
~ _、-'ー-----=、====、,,,,,、--========'''ー-='ー====ー------、;;;;、-"--、.
|ー'"~~~~~~~~~~~~~~~~~~~~~~`''''ー---..、 /-‐'''''''''''''""'iヽ )
| :.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:::::::::::::::::::::::::::.:::::.:.:.:.:::`''ヽ、 /:.:.:.:.:.:.:.:.:.:.: : : : | ´
ヽ、,,,,,,___:.:.:.:.;;.;.;.;.;.;.;;.;.;.;.;.;.;.;.;.;;.;.;;.;;.;.;.;.;.;.;;.;.;.;.;.;.;.;.;.;.;.;;.;.;.;.;.:.:.:.:.:.:.:.:._,,,,ノ
414:デフォルトの名無しさん
04/01/23 00:02
昔のPerlラクダ本に載ってたサンプル。
こんなルーチン(?)がいくつかあって、ラベルと
goto文で状態遷移をわかりやすく表現してた。
Stateパターンの100倍好き。
whatnow: {
print "\nWhat now? ";
($ans = substr(<STDIN>,0,1)) =~ y/A-Z/a-z;
goto mail if $ans eq 's';
goto edit if $ans eq 'e';
goto end if $ans eq 'a';
goto end if $ans eq 'q';
goto list if $ans eq 'l';
goto help;
}
URLリンク(examples.oreilly.com)
の ch6/pchelp が全ソース
415:デフォルトの名無しさん
04/01/23 23:02
「実録!天才プログラマー」に載ってたテープブートローダーのコード。
ゲイツが書いたやつ。
416:デフォルトの名無しさん
04/01/24 05:41
#include <stdio.h>
#include <malloc.h>
main(togo,toog)
int togo;
char *toog[];
{char *ogto, tgoo[80];FILE *ogot; int oogt=0, ootg, otog=79,
ottg=1;if ( togo== ottg) goto gogo; goto goog; ggot:
if ( fgets( tgoo, otog, ogot)) goto gtgo; goto gott;
gtot: exit(); ogtg: ++oogt; goto ogoo; togg: if ( ootg > 0)
goto oggt; goto ggot; ogog: if ( !ogot) goto gogo;
goto ggto; gtto: printf( "%d goto \'s\n", oogt); goto
gtot; oggt: if ( !memcmp( ogto, "goto", 4)) goto otgg;
goto gooo; gogo: exit( ottg); tggo: ootg= strlen(tgoo);
goto tgog; oogo: --ootg; goto togg; gooo: ++ogto; goto
oogo; gott: fclose( ogot); goto gtto; otgg: ogto= ogto +3;
goto ogtg; tgog: ootg-=4;goto togg; gtgo: ogto= tgoo;
goto tggo; ogoo: ootg-=3;goto gooo; goog: ogot= fopen(
toog[ ottg], "r"); goto ogog; ggto: ogto= tgoo; goto
ggot;}
417:デフォルトの名無しさん
04/01/24 10:29
ここは奇怪なコードを紹介するスレじゃないぞ
418:デフォルトの名無しさん
04/01/24 14:57
デバッグコードを使って、あるソースをメッセンジャー代わりに使う連中がいるらしい。
デバッグバージョンでは何気なく飲み会の誘いが出てくるらしい。
見つかりそうになったらリリースビルドして難を逃れているらしい。
こないだみつかったらしい。
419:デフォルトの名無しさん
04/01/24 20:21
>>416
一瞬で読む気が萎えるな。
420:デフォルトの名無しさん
04/01/24 22:09
>>416
トリッキースレで見たなー。
gotoの数を数えるんだっけ。
>>418
冥福を祈る……。
421:デフォルトの名無しさん
04/01/24 22:10
違った、トリッキースレじゃなくて邪悪Cコードスレだ。
422:デフォルトの名無しさん
04/01/25 13:42
#include <iostream.h>
int main()
{
for(int i=0;7>1;i++){
cout<<i;
}
return 0;
}
423:デフォルトの名無しさん
04/01/25 18:52
ここはいつから邪悪なコードスレになりましたか?
424:デフォルトの名無しさん
04/01/25 23:01
void mani(void){
mani();
}
void main(void){
mani();
}
425:(^v^)-666
04/01/26 01:33
オリが初めて感動したソース(処理部分)は、以下の部分だったなぁ。
これ見て、目から鱗 でつ た。
long l;
l = 1;
if (*(char *)&l != 1) {
return;
}
426:デフォルトの名無しさん
04/01/26 02:25
えーんでぃあーん、嘘付かなーい♪
ってチェックか何かですか。
427:デフォルトの名無しさん
04/01/26 02:40
if (htonl(l) == l)
return;
428:(^v^)-666
04/01/26 04:22
>426タン YESでつ。
>427タン 今なら、こんな関数がありますね。私もその関数、使っています。
429:426
04/01/26 06:19
>>428
こうゆうの良いっすね。さり気なく。
レスどーもー。
430:デフォルトの名無しさん
04/01/26 08:11
PDP endianなんてのも世の中にはありますが……
431:(^v^)-666
04/01/26 18:10
>430タン THXです。
早々、PDP endianについて調べてみました。
LSB first in word, MSW first in long (pdp)
PowerPCやMIPSで使われているんですね。
(感覚的には、統一感のないマシンのような気がしますが・・・)
432:デフォルトの名無しさん
04/01/26 19:32
PowerPCか。無視するわけにはいかんなあ。
433:デフォルトの名無しさん
04/01/27 01:49
int i; ←コレ
void main( void )
{
:
}
434:デフォルトの名無しさん
04/01/27 01:52
PowerPC はエンディアンをエミュレートする機能が付いていたんじゃなかったっけ?
たしか、Virtual PC がその機能を使っていたはず。
435:デフォルトの名無しさん
04/01/27 01:57
普通のプログラム中でいちいち切り替えさせるわけにもいかんでしょ。
436:デフォルトの名無しさん
04/01/27 18:30
PowerPC は bi-endian なんじゃないの?
little も big も扱えるという。
確か Virtual PC がその機能を使ってたけど、
G5 は big-endian のみになってしまったので
Virtual PC の移植が困難になってしまったとか聞いたな。
437:デフォルトの名無しさん
04/01/27 22:57
だいたいの人はここは関数にするだろって箇所が、
#defineで書かれていたこと。
ホホー!てな気分でした。
438:デフォルトの名無しさん
04/01/28 03:47
だいたいの人はここは構文にするだろって箇所が、
メソッドで書かれていたこと。
ウッホホーイ!てな気分でした。
439:デフォルトの名無しさん
04/01/28 19:49
>>437
DirectXのライブラリであったなぁ。
あれ初めて見たとき、魂がアンドロメダまで飛んでったよ。
440:デフォルトの名無しさん
04/01/29 07:03
めちゃくちゃ感動でなくていいから
もっとがしがし具体的に感動したソースはってー、はってー
441:デフォルトの名無しさん
04/01/29 07:53
そうは言っても貼れる程度の大きさではね……。
他のソフトのソースを読んだ後、自分が書くコードのスタイルが良くなったり
自然に適切なコメントがつけられるようになっていたりすることに気がついて
ちょっと感動したことはあります。直接ソースコードに感動したわけではないけど。
442:デフォルトの名無しさん
04/01/29 10:34
// unsigned x;
x&-x
x の最下位ビットのみ 1 になった値を取得
x&((~x)+1)
negate が 2 の補数でない環境でも動くようにしたもの。
443:デフォルトの名無しさん
04/01/30 00:12
>>433
えらいさりげないけど、これは・・・
444:(^v^)-666
04/01/30 00:58
>440 それじゃ、お言葉に甘えて・・・。一寸、長くなるけれども貼ってみる。
内容は、BresenhamのDDA。
/* 次の2つのマクロ関数は本プログラム内で必要になるものである */
#define abs(x) (x>=0?(x):-(x)) /* 変数の絶対値を得る */
#define sgn(x) (x>=0?(1):(-1)) /* 変数の符号を得る */
/***** Program begins here ****/
line(x1, y1, x2, y2, c)
int x1; /* x-座標 */
int y1; /* y-座標 */
int x2; /* x-座標 */
int y2; /* y-座標 */
int c; /* 色番号 */
{
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5389日前に更新/205 KB
担当:undef