七行プログラミング part5at TECH
七行プログラミング part5 - 暇つぶし2ch1:デフォルトの名無しさん
06/03/16 09:02:39
7行×79文字なら言語は問いません。
過去作品は、もしかしたら>>2-20あたりに。

前スレ
スレリンク(tech板)
part 3
URLリンク(pc2.2ch.net)
part 2
URLリンク(pc3.2ch.net)
part 1
URLリンク(pc.2ch.net)


2:デフォルトの名無しさん
06/03/16 09:39:32


3:デフォルトの名無しさん
06/03/16 13:11:36
作品集
スレリンク(tech板:5-15番)
スレリンク(tech板:25番)

Pt.2スレの作品一覧
スレリンク(tech板:900-906番)n

4:デフォルトの名無しさん
06/03/17 02:23:31
ここは放置すると即死するのかな。
インデックスでも貼るか

5:http://www.vector.co.jp/soft/win95/util/se072729.html
06/03/18 19:49:20
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

6:デフォルトの名無しさん
06/03/19 17:43:27
Part 4スレのまとめは
スレリンク(tech板:993-995番)n

7:955
06/03/21 02:34:36
スレ立てインデックス乙乙

本当はこれがやりたかった。全画面注意
ただ単に作ったファイルを.txtにしてコピペしただけ


3ロウタムテ2ロムテクタタ0GMウ@0G"0G,0G-0G?0GB0GO0GV0G[3タq(自己改変とINT10hの練習)3タq
フフフフフフフフフフフフケタタイ カ サョo3レS]サ」J3レセ -ク$$Pクヘハ3チP_SXイミフWWWウハWWWWオkWWWWイ オタP[%
クYJ3テPUSVRRWクm Pクーフ3ナPUSVRRWクm Pクワフ3ナPクョホ3ナPUSVRRWク!!PクンンPPクゥゥPPPクブPRR%
ク /PRRUSVRRWクA}3チPクS13チPクO)Pク6a3チ3ツPクo」3ツPクタa3チ3ツPUSUSVWーA3チエRPクa<3チ3ツP%
ーA3チエ^PUSVRRーハ3チエ PウェウェWWWWWWW3ター"ムネヘミT]ク&&2タムネ3ノア。3メ3ロSSヘミ^_ク@QムタPPヌ゚%
3ター。HムタムタPPPYャ]ミリ\ェW]3ロキ<ミマ;ンu.3タPPHヘミ_^Iuヘ3ノアPQ^ア。Iムチムチクタヒ5タタヘ!ムネsノヘ フ


8:デフォルトの名無しさん
06/03/21 02:43:01
>>7
お見事

9:デフォルトの名無しさん
06/03/21 03:04:55
955氏
今回もXPのみ?・・・Orz

10:デフォルトの名無しさん
06/03/21 05:34:48
>>9
前スレ973も>>7も、うちの2000で動く。
そもそもDOS命令なんで、OS関係ないと思われ。
前スレ960のMessageBoxは環境依存だと思うけど、
(DLL名の省略の関係?)
改変した前スレ966は2000では動きました。


>>7
すげー。INT10hはこういう使い方ができるのかー。

インデックスの方も乙。

11:デフォルトの名無しさん
06/03/21 15:56:26
>>7
すげえええええええええwwwwwwww

こんなのってどうやって付くんの?
テキストに仕方はどうやるんだろ。
アセンブラ作って変換するんだろか・・・

12:デフォルトの名無しさん
06/03/21 16:56:57
>>9
行頭・行末にスペースが入ってないことを確認して
CR+LF改行で保存したら98SE@VPCでも動きますた。
&nbsp;はスペースでいいみたい。

13:デフォルトの名無しさん
06/03/21 20:20:12
>  はスペースでいいみたい。

一つだけの時は、それで OK だけど、二つ以上つづく時は
  にしないと、(HTML の仕様で) 一つにまとめら
れちゃうよ。

14:デフォルトの名無しさん
06/03/21 22:47:21
>>13
いやつまりnon-breaking spaceは$A0だから、さ

15:デフォルトの名無しさん
06/03/22 07:41:42
ふと思ったが、バイナリ投稿自体は面白いが流れ的にちと怖くね?
スクリプトのコードなら何の処理か想像つくのが多いだろうが
そのうち簡易ウィルスやOSクラッシャうpる香具師がいつか出そうな悪寒

今浮かんだ対策は
バイナリうp師は必ず頭に「実行は自己責任で」付けるとかその辺

当然っちゃ当然だがバイナリは読めない香具師多そうで怖い

16:デフォルトの名無しさん
06/03/22 15:32:07
たしかに。
どんなのプログラムなのか必ずデバッガ上でトレースしてから実行してるが、
いきなり実行する香具師は喰らうだろうな。某流出もそういう仕組みだし。
OS吹き飛ばしたり、HDD全消去くらいなら簡単だろうが、
今の流れの形式で、ウイルスともなるとかなりレベル高そうだな。

けど、グロ画像と同じで、気づいた香具師が警告入れるだろうし、
その上で踏むのなら、自己責任しょ。
テキストに貼り付けて拡張子comに変えた時点で、その行為が意味することくらいわかってなきゃな。


どんな動作するか書いてない、2chに貼られたバイナリをいきなり実行する香具師って・・・

17:デフォルトの名無しさん
06/03/26 00:20:49
URLリンク(no2.no-ip.info)
>>7を試したらこんなの出たけどこれでいいの?

18:113
06/03/26 01:31:55
では七歩歩く間にプログラムを書くのじゃ。テーマは兄弟にせい。

19:デフォルトの名無しさん
06/03/26 10:21:39
うるせーよ、曹丕

20:デフォルトの名無しさん
06/03/29 18:40:10
>>18
#include <iostream>
int main()

21:デフォルトの名無しさん
06/03/29 20:42:28
>>18
□歩□□玉□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□角□□□□□飛□
香桂銀金王金銀桂香

22:デフォルトの名無しさん
06/03/29 23:35:04
>>21
二歩でアウトーッ!

23:デフォルトの名無しさん
06/03/29 23:44:22
二つではないのでセーフ

24:デフォルトの名無しさん
06/03/30 02:22:01
お前頭いいな

25:デフォルトの名無しさん
06/03/30 02:50:24
ではどうやって2つ目の歩を置いたんだね。

26:デフォルトの名無しさん
06/03/30 02:59:55
お前頭いいな

27:デフォルトの名無しさん
06/03/30 03:03:44
初期配置

28:デフォルトの名無しさん
06/03/30 03:04:43
二歩と聞くと、豊川六段(前原代表)がNHK杯でにふった時の
千葉女流のあーってさけぶやつを思い出すw。

29:デフォルトの名無しさん
06/03/30 11:37:20
二歩の判定に==使うコードが悪いな
俺なら>=使う

30:デフォルトの名無しさん
06/03/30 11:55:00
>=を使ったらルールが変わってるよ。

31:デフォルトの名無しさん
06/03/31 22:27:06
7分以内に答えられたらIPA認定
URLリンク(oshiete1.goo.ne.jp)
#include <iostream.h>
main(){
char *(*pp)[3];
printf("%lu", sizeof(char*));
printf(" pp%lu", pp);
printf(", ++pp%lu", ++pp);
}

32:デフォルトの名無しさん
06/03/31 22:30:32
匕行プログラミング

33:デフォルトの名無しさん
06/03/31 23:41:25
pointer to array of pointer to charかね
 sizeof(char*  )== 4
 sizeof(char*[3])== 12
だから12増えるのが正解だろ。


34:デフォルトの名無しさん
06/03/32 00:18:13
>>33
ありがとうございました。やっと分かりました。
あとで、20ポイントつけておきますね。

35:デフォルトの名無しさん
06/03/32 01:41:12
や、俺gooに登録してへんから('ω`)

36:デフォルトの名無しさん
06/03/32 23:59:38
最も偏差値の高いスレはここですね?

37:せっ☆マ ◆wwwwWwWWWw
06/04/05 15:15:35
とうとうVIPから来てしまいました

38:デフォルトの名無しさん
06/04/05 22:39:45
安南将棋って知らないの?

39:デフォルトの名無しさん
06/04/08 19:25:54
過去スレみれねえ
まとめサイト欲しい

40:デフォルトの名無しさん
06/04/08 19:32:57
>>39
URLリンク(cm.xrea.cc)

41:デフォルトの名無しさん
06/04/09 00:07:50
>>40
じつに素晴らしい

42:デフォルトの名無しさん
06/04/09 00:19:28
#include <windows.h>
double sin();char b[99];long*h,w[]={65537,8000,8000,524289,20},d[]={b,99,0,0,0,
1,0,0};WINAPI f(t,u,x,y,z){waveOutReset(h);waveOutWrite(h,d,32);}main(c,v)char
**v;{if(c>1){for(c=99;c--;b[c]=sin(c*0.7854)*64);if((c=atoi(v[1]))>0){waveOutO\
pen(&h,-1,w,0,0,0);waveOutPrepareHeader(h,d,32);for(c=timeSetEvent(60000/c,1,f,
timeBeginPeriod(1),1);!kbhit();Sleep(1));timeKillEvent(c);waveOutReset(h);wave\
OutUnprepareHeader(h,d,32);waveOutClose(h);}}}

Win32用簡易メトロノーム。コマンドライン引数でBPMを指定。何かキーを押せば終了します。
マルチメディアタイマーを利用しているのでwinmm.libとのリンクが必要。

43:デフォルトの名無しさん
06/04/09 23:47:28
#include <stdio.h>
int a[81];s(n){int i=80,c[10];if(a[n])s(n+1);else if(n>80)for(;~i;i--)printf("\
%d%c",a[i],i%9?0:10);else{for(i=9;i;)c[i--]=0;for(i=8;i--;)c[a[n/9*9+i]]=c[a[n%
9+i*9]]=c[a[n/27*27+n%9/3*3+i%3+i/3*9]]=1;for(i=1;i<=9;i++)c[i]||(a[n]=i,s(n+1)
,a[n]=0);}}main(i){i=80;for(;~i;)scanf("%d",&a[i--]);s(0);}
数独を解くプログラムのつもり。あと2行あるからなんかしたいけど何をしようか思いつかん。
標準入力として↓みたいなファイルを食わせると答えを出す。
0 0 6 0 0 0 0 0 1
0 7 0 0 6 0 0 5 0
8 0 0 1 0 3 2 0 0
0 0 5 0 4 0 8 0 0
0 4 0 7 0 2 0 9 0
0 0 8 0 1 0 7 0 0
0 0 1 2 0 5 0 0 3
0 6 0 0 7 0 0 8 0
2 0 0 0 0 0 4 0 0

ぶっちゃけ七行やったこと殆どないんで無駄が多そう。
ちなみにあほ再帰なんで表出が減るとあほみたいに遅くなります。
将来は数々の人々みたいに立派な七行erになりたい。

44:デフォルトの名無しさん
06/04/10 11:38:48
>>43
4 0 0 0 0 0 8 0 2
0 0 0 0 1 8 0 0 9
2 0 0 3 0 5 0 0 0
0 5 0 0 6 0 2 0 0
0 0 0 7 0 4 0 9 0
0 7 0 0 2 0 0 3 6
0 0 0 9 0 0 7 0 0
8 0 6 0 7 0 0 0 0
0 0 5 0 0 0 6 0 4
の問題で誤答が出ました。


45:デフォルトの名無しさん
06/04/10 18:15:37
>>40
GJ!

46:デフォルトの名無しさん
06/04/11 19:11:53
>>44単純なミスだった。あほだなあ自分。他にもバグめっさあるかも。
#include <stdio.h>
int a[81];s(n){int i=80,c[10];if(a[n])s(n+1);else if(n>80)for(;~i;i--)printf("\
%d%c",a[i],i%9?0:10);else{for(i=9;i;)c[i--]=0;for(i=9;i--;)c[a[n/9*9+i]]=c[a[n%
9+i*9]]=c[a[n/27*27+n%9/3*3+i%3+i/3*9]]=1;for(i=1;i<=9;i++)c[i]||(a[n]=i,s(n+1)
,a[n]=0);}}main(i){i=80;for(;~i;)scanf("%d",&a[i--]);s(0);}


47:デフォルトの名無しさん
06/04/11 22:23:27
>>43
入力が正規な問題かどうかを判定するルーチンいれられません?
現状だと1を81個でも(そのまんまになるが)解答として出力されるので。

48:デフォルトの名無しさん
06/04/12 16:36:52
>>46
解答をリダイレクトすると 0x00 が出力されてるので
printf("%d%c",a[i],i%9?32:10);
の方がいいかも。
複数解答があるときは行をあけて欲しいなぁとか。
すでに7行以下だと最適化するのもむなしいなー。

49:デフォルトの名無しさん
06/04/13 23:15:08
#include <stdio.h>
int a[81],c[10],j,k;o(){for(j=80;~j;j--)for(k=80;k>j;k--)if((j/9==k/9||j%9==k%9
||(j/27==k/27&&j%9/3==k%9/3))&&a[j]==a[k]&&a[j])return 0;return 1;}s(n){int i=
80;if(a[n])s(n+1);else if(n>80){for(;~i;i--)printf("%d%c",a[i],i%9?32:10);puts(
"\n");}else{for(i=1;i<=9;i++)(a[n]=i,o()?s(n+1):0,a[n]=0);}}main(i){i=80;for(;~
i;)scanf("%d",&a[i--]);o()?s(0):puts("問題おかしい");}
あちこち無駄っぽい。むう。
どのみちもう7行きってて微妙だからなんか別のものを組もうかなぁ。

50:デフォルトの名無しさん
06/04/14 10:39:22
逆に問題を生成してみるとか。
あ、生成と解答をまとめると結構ハードル高くなるかな?

51:デフォルトの名無しさん
06/04/15 02:15:07
初代スレ読んできたけどレベル高いなぁ。トリッキーの1と60がすさまじい。
初代スレのWindows関連は面白かったから、ああいうのでなんかお題プリーズ。

52:デフォルトの名無しさん
06/05/07 16:27:06
保守&新しい息吹待ちage

53:デフォルトの名無しさん
06/05/10 00:45:47
Java script アイコンエディタ おそらくIE6専用(Mozilla 1.7は不可)

大きい■をクリックで、下のボックスに入力した色が塗られる(各色0-255)。
左上のアイコンをクリックすると、別ウィンドウで ppm 形式のデータを表示するので、
表示>ソース>メモ帳などが開いたら名前をつけて保存>何とか.ppm
大きさの変更は、1行目のA=16を適当にいじる

機能も不十分だが、最大の問題点は8行だということ。誰か頼む。

<body><script>Z=[A=16];B=document.all;s=S="<br>";function Y(D){(D?self:open()).
document.writeln(S)}function X(p){for(c="#",i=0;i<3;S="P3\n"+A+" "+A+"\n255")c
+=(0+(Z[p*3+i]=B.tags("input")(i++).value-0).toString(16)).slice(-2);B(P=7+p*2+
p/A|0).style.color=B(++P).style.background=c;for(i=0;i<A*A*3;S+=Z[i++]+" ")i%(3
*A)?0:S+="\n"}for(i=0;i<A*A;i%A?0:S+=s,S+="<b style=color:#AAA onClick=X("+i+
")>■</b><p style=background:#AAA;position:absolute;top:"+(i/A|0)*2+";left:"+(
i++%A)*2+";overflow:hidden;width:2;height:2 onClick=Y()></p>")for(j=3;j--;)Z[i*
3+j]=176;Y(S+=s)</script>R<input>G<input>B<input>


54:デフォルトの名無しさん
06/05/10 04:01:31
>>53の改良
少しインターフェースが違っているが7行化+Firefoxでも動くように。
多分Operaでも動くと思う。

<div style="width:256px"><script>A=16;function X(p){for(c=[],i=0;i<3;i++)c[i]=Z
[3*p+i]=+D.T("input")[i].value;D.T("b")[p].style.background="rgb("+c.join(",")+
")";}Z=[];D=document;for(i=0;i<A*A;D.write("<b style='background:#aaa;float:l"+
"eft;overflow:hidden;width:16px;height:16px;' onclick='X("+i+")'></b>"),i++)for
(j=3;j--;)Z[i*3+j]=176;D.T=D.getElementsByTagName;</script></div>R<input>G
<input>B<input><button onclick="s='P3\n'+A+' '+A+'\n255';for(i=0;i<A*A*3;s+=Z[
i++]+' ')i%(3*A)?0:s+='\n';with(self.open().document){writeln(s);close()}">出力


55:デフォルトの名無しさん
06/05/11 00:06:33
昔、お遊びでここにBASIC書いてみた者(何本か前の448)ですが、久々にここに
来てあれ書いてた頃が懐かしくなったですよ。
・・いまだに7行は達成できないんだけどorz
#それどころか、会社入ってから書かされるプログラムは肥大化して行くばかり

56:デフォルトの名無しさん
06/05/11 01:45:24
複数人での開発には、ワンライナーや7行みたいな
詰め込みコードは向かないし、他の人がコード見る場合があれば迷惑だよ
だから、行数が増えるのは別に悪い事じゃない。

#短く分かり易く書けるのに、無意味に長く難しく書くのも迷惑ダガナー

57:デフォルトの名無しさん
06/05/11 22:54:48
でも7行書きは楽しいよ?
大学の課題提出とか無意味に七行化しちゃうよ

58:デフォルトの名無しさん
06/05/11 23:46:08
迷惑かどうかを考えるスレじゃないしね。

59:デフォルトの名無しさん
06/05/12 00:15:40
>>56>>55最終行へのレスだろう。

60:デフォルトの名無しさん
06/05/16 15:46:12
URLリンク(kihira.jp)
これ、トリッキーの1本人?それとも壮大なパクリ?

61:デフォルトの名無しさん
06/05/16 17:55:35
>>60
2chって文字が・・・
多分パクリ

62:デフォルトの名無しさん
06/05/16 18:30:46
>>61
Part1の32で

> (関東など一部の地域での)テレビの2ちゃんねるシミュレータ、
> すなわち砂嵐シミュレータを作ってみました。ざーっていうあれです。音は鳴らないけど。

とあるから、パクリの証拠ではないんじゃない?

63:デフォルトの名無しさん
06/05/17 00:54:35
パクリなら他の人の作品もパクるだろうから、
トリッキーの1さんっぽい気はする。
経歴みても頭良さそうだし。

64:デフォルトの名無しさん
06/05/17 03:16:25
どうせ外人がパクったんだろ、と思ったら、日本ドメインじゃねーかw
確かに、1さんかもしれんな

65:デフォルトの名無しさん
06/05/18 23:24:04
>>7
イミフWWWウハWWWWオkWWWW
ウェウェWWWWWWW

66:デフォルトの名無しさん
06/05/19 17:49:30
>>65
コピーしてテキストエディタに貼付けて拡張子.comで保存

但し2chビューア等には、ご丁寧にも
半角スペースみたいな記号を
コピー時に&表記に変換したりする機能があったりするので
出来れば普通のブラウザからコピーを推奨

67:デフォルトの名無しさん
06/05/19 18:56:48
>>66
>>7の2行目と5行目のことじゃね?

68:デフォルトの名無しさん
06/05/19 21:30:54
>67
空白行?

69:デフォルトの名無しさん
06/05/19 22:14:04
つーかcomファイルなんて実行できねえよ

70:デフォルトの名無しさん
06/05/19 22:39:38
>>68
二行目
> フフフフフフフフフフフフケタタイ カ サョo3レS]サ」J3レセ -ク$$Pクヘハ3チP_SXイミフWWWウハWWWWオkWWWWイ オタP[%
五行目                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ーA3チエ^PUSVRRーハ3チエ PウェウェWWWWWWW3ター"ムネヘミT]ク&&2タムネ3ノア。3メ3ロSSヘミ^_ク@QムタPPヌ゚%
                  ~~~~~~~~~~~~~~~~~

71:デフォルトの名無しさん
06/05/19 23:24:49
>>70
作者乙

72:デフォルトの名無しさん
06/05/19 23:55:08
>>69
死ね

73:デフォルトの名無しさん
06/05/23 08:28:49
comファイルはバイナリそのもので、
プログラムングとは言えないんじゃね?

74:デフォルトの名無しさん
06/05/23 08:41:54
貴様ヘッドアセンブルを否定したな!

75:デフォルトの名無しさん
06/05/23 10:20:29
この類のは散々既出かもしれませんが、PHPで1行掲示板を書いてみました。
連投対策(同IPから60秒間連投を制限)も一応施してあります。なんかまだまだ
短くできそうな悪寒がします。

<?$ip=$_SERVER['REMOTE_ADDR'];$d=time();$n=htmlspecialchars($_POST['n']);
$m=htmlspecialchars($_POST['m']);$p="log.txt";if($n&&$m){$l=@file($p);
$s=explode("<>",$l[0]);if(($ip!=$s[0])||($d-$s[3]>60)){$fp=fopen($p,"w+");fputs
($fp,$ip."<>".$n."<>".$m."<>".$d."<>\n");for($i=0;$i<20;$i++)fputs($fp,$l[$i]);
fclose($fp);}}?><form method=POST><input name=n>:<input name=m><input type=
submit><?$l=@file($p);foreach($l as $arr){$s=explode("<>",$arr);print("<hr>[".
$s[1]."] ".$s[2]." (".date("Y/m/d h:i:s", $s[3]).")");}?>

76:デフォルトの名無しさん
06/05/23 18:25:51
確かにプログラムングとは言えないな

77:デフォルトの名無しさん
06/05/23 18:31:57
>>75
PHPは関数名が長いね…

縮め、改行入力阻止、0のみ入力許可
<?$f=array('n','m');foreach($f as&$v){$v=strtr(htmlspecialchars($_POST[$v]),
"\n",' ');}$p='log.txt';if($f[0]!=''&&$f[1]!=''){$l=@file($p);$s=explode('<>',
$l[0]);if(($ip=$_SERVER['REMOTE_ADDR'])!=$s[0]||($d=time())-$s[3]>60){$l[20]=''
;file_put_contents($p,"$ip<>$f[0]<>$f[1]<>$d<>\n".implode('',$l));}}?><form
method=POST><input name=n>:<input name=m><input type=submit><?$l=@file($p);
foreach($l as$arr){$s=explode('<>',$arr);echo"<hr>[$s[1]] $s[2] (".date(
'Y/m/d h:i:s',$s[3]).')';}?>

78:デフォルトの名無しさん
06/06/29 14:59:10
保守

79:デフォルトの名無しさん
06/07/18 21:50:29
ホッシュ

80:デフォルトの名無しさん
06/08/10 02:37:10
シェルピンスキーのギャスケット

#include <stdio.h>
main()
{
    int x, y;
    for (y = 0; y < 32; y++){ for (x = 0; x < 32; x++)
    printf(x & y? "..": "■"); printf("\n"); }
}

81:デフォルトの名無しさん
06/08/19 15:58:18
JavaScript 弾避け。マウスカーソルを四角にぶつけないように動かす
互換性のないように作ってあるので、IE専用

<body id=B onMouseMove=y=event.y;x=event.x><script>h=B.clientHeight-20;a=[b=[q=
[D=document]]];for(U=x=99;x--;C=F=q[x]=P=y=0)D.write("<b style=background:red;"
+"width=16;height=16;position:absolute;top:-20></b>");function T(){for(i=C;i--*
!F;J=D.all(5+i).style,l=q[i]/U,m=J.left=a[i]*(c=1-l)+a[d=i+U]*l,n=J.top=b[i]*c+
b[d]*l,F=m-15<x&x<m+16&n-15<y&y<n+16)if(!q[s=i]--)for(j=2;j--;s+=R%3+1)R=Math.
random(q[i]=U)*w*h|0,a[c=j?i:i+U]=s%2?s%4>1?0:w:R%w,b[c]=s%2?R%h:s%4?h:0;P++-C*
9||C-U&&C++;if(F)alert(P);else setTimeout(T,U-C)}T(w=B.clientWidth-20)</script>


82:デフォルトの名無しさん
06/08/19 16:15:30
GJ!
だんだん多く速くなるあたり職人芸だな

83:デフォルトの名無しさん
06/08/28 21:02:17
保守age

84:デフォルトの名無しさん
06/09/29 15:58:31
保守

85:デフォルトの名無しさん
06/10/09 16:07:24
hosyu

86:デフォルトの名無しさん
06/10/10 20:06:29
俺には無理だったお題
perlでモジュールを使わずに7行でRSSリーダー(RSS to html)を作れ

LWP::Simpleも使わずに7行はやっぱり無理か??


87:デフォルトの名無しさん
06/10/10 20:13:20
RSSリーダーの定義による

88:86
06/10/10 20:24:20
定義はRSSをgetして、htmlに変換するってもの
LWP::Simpleと、XML::RSSで作れたんだがモジュール無しは俺にはむりぽ


89:デフォルトの名無しさん
06/10/10 23:22:55
Socketも使えんがな

90:デフォルトの名無しさん
06/10/10 23:32:32
curlで取得

91:デフォルトの名無しさん
06/10/10 23:33:19
一先ずLWP::Simpleだけで作れないかやってみるお

92:デフォルトの名無しさん
06/10/11 00:28:14
XSLT使えば2~3行で書けるんじゃない?あほらしくてやる気しないけど

93:デフォルトの名無しさん
06/10/12 14:02:19
じゃあ俺も無理だったお題。
Cで7行正規表現。どうやっても7行は無理だったw 腕に覚えのある奴がいたら、是非挑戦してみてくれ。

94:デフォルトの名無しさん
06/10/12 14:07:44
>>93
正規表現って何をサポートすればいいんだ?

95:デフォルトの名無しさん
06/10/12 22:49:52
#include "regexp.h"

96:デフォルトの名無しさん
06/10/12 22:53:17
#include <boost/regex.h>

97:デフォルトの名無しさん
06/10/14 02:02:18
catコマンドってC言語で7行で作れる?
どこまでの機能を詰め込めるかの問題になりそうだけど。

98:97
06/10/14 02:04:30
作れる?ってのはおかしいか。
作るだけなら余裕だろうし。
どれだけ機能を削ったり詰め込めるかって感じ。

99:トリッキーの1
06/10/14 05:40:11
お久しぶりです。part1でお世話になったトリッキーの1です。
>>60-64で晒されていますが、そのサイトは私のサイトです。
正規表現が面白そうだったので久々に作ってみましたが、9行になりました。
縮めるテクニックなどを完全に忘れてしまっていますが、頑張れば7行は可能そうです。
仕事の合間に7行目指して頑張ってみようと思います。

使える記号は()*|のみです。とりあえずこれだけあれば他のも表現できると思います。
文脈自由文法は、
R ::= T | T "|" R
T ::= ε | FT
F ::= P | P*
P ::= char | "(" R ")"
となっています。gcc2.91でのみコンパイル確認しました。
使い方は、"a.exe regexp"とすれば、標準入力から読んだ内容をregexpで走査します。
見つかればmatchと表示して終了します

#include <stdio.h>
int n[999][99],z=2,i;char*s,c[999][99],v[9999];h(f,t,k){for(i=0;c[f][i]!=0;i++)
;c[f][i]=k;n[f][i]=t;}p(int o,int f,int t,char*l){int x;if(l){for(x=0;(f=c[o][x
])!=0;x++)if((f==1||*l==f)&&(n[o][x]==1||p(n[o][x],0,0,(f==1)?l:l+1)))return 1;
}else{(o==0)?p(1,f,t,0),(*s=='|')?s++,p(0,f,t,0):0:(o==1)?(*s==')'||*s=='|'||*s
==0)?h(f,t,1):(x=z++,p(2,f,x,0),p(1,x,t,0)):(o==2)?(x=z++,c[x][0]=1,n[x][0]=t,p
(3,f,x,0),(*s=='*')?h(f,t,1),s++,n[x][0]=f:0):(*s)?(*s=='(')?(s++,p(0,f,t,0),++
s,0):h(f,t,*s++):0;}}main(int x, char**o){s=o[1];p(0,0,1,0);while(gets(v)){s=v;
while(*s){if(p(0,0,0,s++))return printf("match");}}}

100:トリッキーの1
06/10/14 05:47:13
多分大体のコンパイラで動くバージョンはこちらです。連投失礼しました。

#include <stdio.h>
int n[999][99],z=2,i;char*s,c[999][99],v[9999];p(int o,int f,int t,char*l){int
x;if(l){for(x=0;(f=c[o][x])!=0;x++)if((f==1||*l==f)&&(n[o][x]==1||p(n[o][x],0,
0,(f==1)?l:l+1)))return 1;}else{(o==0)?p(1,f,t,0),(*s=='|')?s++,p(0,f,t,0):0:(
o==1)?(*s==')'||*s=='|'||*s==0)?c[f][c[f][98]]=1,n[f][c[f][98]++]=t:(x=z++,p(2
,f,x,0),p(1,x,t,0)):(o==2)?(x=z++,c[x][0]=1,n[x][0]=t,p(3,f,x,0),(*s=='*')?c[f
][c[f][98]]=1,n[f][c[f][98]++]=t,s++,n[x][0]=f:0):(*s)?(*s=='(')?(s++,p(0,f,t,
0),s++,0):(c[f][c[f][98]]=*s++,n[f][c[f][98]++]=t):0;}return 0;}main(int x,char
**o){s=o[1];p(0,0,1,0);while(gets(v)){s=v;while(*s){if(p(0,0,0,s++))return
printf("match");}}return 0;}

101:デフォルトの名無しさん
06/10/14 10:22:42
キタ━(━(━(-( ( (゚∀゚) ) )-)━)━) ━ !!!!!

102:デフォルトの名無しさん
06/10/14 11:17:28
凄すぎます。

103:デフォルトの名無しさん
06/10/14 14:51:06
天 才 現 る

104:デフォルトの名無しさん
06/10/14 14:53:22
何て恐ろしい子!

105:デフォルトの名無しさん
06/10/14 15:15:59
BNFの自前パース+NFA検索ってところかな?
10行でもありえないくらい凄いよ…本当に7行なんて出来るんだろうか

106:デフォルトの名無しさん
06/10/15 01:37:57
よく読んでないんだけどa==bを使ってるところをうまくa-bにするとかで数文字減れないかな

107:トリッキーの1
06/10/15 02:06:53
>>105
おお、その通りです。あのコードからよくわかりましたね!
DFAにすべきなんでしょうが、動けばいいやってことでNFAにしました。
でも現状では最初に適当に作りすぎたためにどんなに頑張っても9行なので、
行数を減らすことを前提に少し構造を変えないといけないかも…
等価なBNFで状態数の小さいものを書くことが出来ればなんとかなるのかな?

>>106
ヒントありがとうございます。
まだ小細工は全然していないのですが、数文字が重要になってきたら試してみます。

7行達成したらお披露目にきますね ノシ

108:デフォルトの名無しさん
06/10/15 12:12:36
int x;if(l){for(x=0;

int x=0;if(l){for(;

こういう積み重ねが大事なんだろうな。 人間ってすごいな。

109:デフォルトの名無しさん
06/10/15 13:28:33
for(int x=0; はC言語では駄目なんだっけ
C++で出来るようになったのか

110:デフォルトの名無しさん
06/10/15 14:07:28
>>109
C99なら可。

111:デフォルトの名無しさん
06/10/15 19:01:41
(o==0)?(A):(B) → (o)?(B):(A)
とかあるけど……まぁそれでも7行には入りそうにないな。
もっと根本的な対策がいる。


112:デフォルトの名無しさん
06/10/16 01:50:15
'|' とかの即値を数字で書くと一字減る

113:デフォルトの名無しさん
06/10/16 06:58:49
>>112
それは限りなく最後の手段。ASCII文字配列でないコンピュータで動かなくなる。

114:デフォルトの名無しさん
06/10/16 07:58:30
いつの時代のコンピューだよw

115:デフォルトの名無しさん
06/10/16 15:10:16
いや、それは気にすべきだろ。

116:デフォルトの名無しさん
06/10/16 15:48:13
こういう基本的なことは重要

117:デフォルトの名無しさん
06/10/16 17:02:54
それよりもコンピューという略し方のほうが異常だと僕は思うね。

118:デフォルトの名無しさん
06/10/17 00:14:52
>>117
ついに「ぴゅー太」と呼ぶ時代が来たようだな。 時代が追いついてきたな。

119:デフォルトの名無しさん
06/10/17 00:20:38
マイコンと呼ぶ日も近そうだ。ベーマガスペシャル復刊とかね

120:デフォルトの名無しさん
06/10/17 01:03:25
1chipMSX買っちゃったしね。

121:デフォルトの名無しさん
06/10/27 23:58:59
BCELを使った Java難読化プログラムです.
現在,9行.あと少し.キャストがうぜぇ.groovy なら問題なくできるだろう.

import org.apache.bcel.classfile.*;class O{public static void main(String[]s)
throws Exception{new O(new ClassParser(s[0]).parse());}int n=0;void u(Constant
c){ConstantUtf8 u=(ConstantUtf8)c;if(u.getBytes().charAt(0)!='<')u.setBytes(""+
++n);}O(JavaClass j)throws Exception{ConstantPool p=j.getConstantPool();
Constant[]c=p.getConstantPool();for(int i=0;i<c.length;i++){if(c[i]!=null){int
t=c[i].getTag();if(t>8&&t<12){ConstantCP q=(ConstantCP)c[i];if(j.getClassName()
.equals(q.getClass(p)))u(c[((ConstantNameAndType)c[q.getNameAndTypeIndex()]).
getNameIndex()]);}}}u(c[((ConstantClass)c[j.getClassNameIndex()]).getNameIndex(
)]);j.dump(n+".class");}}

BCELじゃなく,ASMとか,javassist を使ったほうがいいのかな?

java -cp .:bcel.jar O <target classfile>

122:デフォルトの名無しさん
06/10/28 01:02:08
>>121
純粋な疑問なんだけど、importが許されるなら、そこで全部書けばいいんじゃない?

123:デフォルトの名無しさん
06/10/28 15:16:15
>>122
「BCELを使った」が前提なだけだから、BECL以外をimportしちゃダメだろう。

もちろん他所で書いてimportして「1行で書きました! 7行以下だからいいよね!」
って主張するのは各人の勝手だとは思うけど、スルーされるか叩かれるだけじゃね?

124:デフォルトの名無しさん
06/10/28 16:08:23
うーん、公式ライブラリ以外を使っているのは微妙な気もするけどな。

125:デフォルトの名無しさん
06/10/28 19:48:05
>>122
Cで #include <stdio.h> 書くのは許していいの?


126:デフォルトの名無しさん
06/10/28 20:19:46
じゃあお前includeディレクティブなしでCでなんか書いてみろ。
できなかったら半年ROMってろ。

127:デフォルトの名無しさん
06/10/28 20:44:46
Cなら楽だろ。

128:デフォルトの名無しさん
06/10/28 23:04:28
>>125
Javaでjava.*を使わなかったら認めてやるよ

129:デフォルトの名無しさん
06/10/29 00:44:16
標準ライブラリや有名どころのはいいんじゃね?


130:デフォルトの名無しさん
06/10/29 01:32:42
標準ライブラリは誰からも文句をつけられないが、
有名どころなら一部の人からは認められないだろうね。
正規表現をboost使って実装されてもハァ?だし。

131:デフォルトの名無しさん
06/10/29 03:21:16
boostを使った面白ネタキボン


132:デフォルトの名無しさん
06/10/29 03:25:40
スレ違い。

133:sage
06/11/09 00:13:29
まだ続いてたんだこのスレ。感動した。

134:デフォルトの名無しさん
06/11/11 16:56:12
age

135:デフォルトの名無しさん
06/11/27 22:46:20
だれかなんかねーの?

136:デフォルトの名無しさん
06/11/27 23:19:49
昔、ポケコンで1行プログラムがあったな。
BASICだが、独特の技術だった。

137:デフォルトの名無しさん
06/11/27 23:45:01
>>135
ネタが無いなら対戦リバーシとかどう?

138:デフォルトの名無しさん
06/11/27 23:46:52
>>137
俺が作るのかw
対戦ってコンピューターとの対戦だよな。
交互に入力する対戦でもいいか。

139:デフォルトの名無しさん
06/11/27 23:49:18
リバーシって昔なかったっけ?
x軸とy軸を入力するやつだった気が

140:デフォルトの名無しさん
06/11/27 23:58:45
おいおいすでに誰かのHPにあったろ。

141:デフォルトの名無しさん
06/11/28 00:08:24
ログみたらオセロ、マインスイーパ、ドラクエ
いろいろあったわ。
同じゲーム作ってもおもしろいんじゃないか?
ネタがあれば作る人はたくさん出てきそうだけどな

142:デフォルトの名無しさん
06/11/28 00:09:31
辞書を外に持った簡易日本語IMEってのはどうだ?

143:デフォルトの名無しさん
06/11/28 00:11:24
>>142
データを外に持つのか。それはいいのか?

144:デフォルトの名無しさん
06/11/28 00:16:31
ダメだったら毎回辞書を標準入力から…

145:デフォルトの名無しさん
06/11/28 00:16:39
だめです

146:デフォルトの名無しさん
06/11/28 00:22:08
ネタとして楽しめるならなんでもいいよ。
評価は見てる人がそれぞれすれば良いんだから。

147:デフォルトの名無しさん
06/11/28 00:25:35
じゃー明日オセロ作るわ。
明日な、明日。

148:デフォルトの名無しさん
06/11/28 00:31:34
>>147
プログラム作ってる暇があったらちゃんとオナニーしろよな

149:デフォルトの名無しさん
06/11/28 00:33:27
>>148
校則で禁止されています。

150:デフォルトの名無しさん
06/11/28 01:25:21
破るためにあるんですよ。ナニとは言いませんが。

151:デフォルトの名無しさん
06/11/28 03:45:57
オナニーじゃ処女膜は破れない

152:デフォルトの名無しさん
06/11/28 04:00:38
処女がバイブ使うのは、推奨しない。
でも、たった7行で逝けるなんて感動。

153:デフォルトの名無しさん
06/11/28 07:54:50
今日はじめてみたけど楽しそうなスレだね。
初代のトリッキー1さんとかってまだ居るの?
5年前って凄いな。

154:デフォルトの名無しさん
06/11/28 08:06:29
7行printfは組込で実際に使った。便利だった。

155:デフォルトの名無しさん
06/11/29 03:25:04
そういや、VBScriptやJScriptってsprintf無いよね?

156:デフォルトの名無しさん
06/11/29 11:02:47
ないみたいだな。
URLリンク(www.google.com)
自前でいろいろ作ってる人はたくさんいるみたいだけど、
これを7行のプログラムにするのも楽しそうだなww

157:デフォルトの名無しさん
06/11/30 03:32:53
10進BASICで七行プログラミング

158:138
06/12/02 21:34:13
先輩!
COMとの対戦オセロ作ってるんですけど50行くらいあるんですよね。
月曜日まで待ってもらっていいですか?

159:デフォルトの名無しさん
06/12/02 22:01:46
よーし じゃあ父さんもなでしこで七行プログラミングしちゃうぞー

160:デフォルトの名無しさん
06/12/02 22:52:59
>>158
きたいあげ

161:138
06/12/04 12:06:28
今14行 あと7行……

162:デフォルトの名無しさん
06/12/04 13:22:05
COMとの対戦オセロなら、パート1でトリッキーの1さんが6行で作ってますね

163:デフォルトの名無しさん
06/12/04 14:07:25
>>162
だから?

164:デフォルトの名無しさん
06/12/04 14:13:19
>>163
せっかくオブラートに包んであげたのに…
既に素晴らしい作品があるから、二番煎じな上に14行なんて面白くもなんともない経過報告いらないですよ

165:デフォルトの名無しさん
06/12/04 14:49:11
>>164
(^ω^;)
最近7行のプログラム出てこないから書いてるだけなんだけど
面白くないと思うなら面白いものを提示してくれ

166:デフォルトの名無しさん
06/12/04 17:44:52
>>165
相殺法と呼ばれる詭弁術の典型例
やっていることがつまらないという評価に対してなんら反論できてない

167:デフォルトの名無しさん
06/12/04 18:02:36
ああ 他人が見ても面白くないのはわかるよ。

#include <stdio.h>
typedef int n;n t[64]={0};n a(n i,n&g){n s=g%8;g+=("1987"[i%4]-48)*(i>3?-1:1);
return !((!s||s==7)&&s+g%8==7);}n h(n x,n m){n i=0,r=1,g;if(t[x])return 1;for(
;i<8&&a(i,g);i++,g=x){for(;t[g]==3-m&&a(i,g)&&g>=0&&g<64;){if(t[g]==m){while(g
!=x)t[a((i+4)%8,g)]=m;r=0;}}}if(!r)printf("%s:%d %d\n",m==1?"黒":"白",x%8+1,x/
8+1);return r;}n d(){n s=0,d,i=0;for(;i<64;i++){printf("□\0○\0●"+(d=t[i])*3
);if(i%8==7)puts("");s=s?d&&s!=d?3:s:d;}return s!=3;}void main(){n x=1,y,p,m=0
,c=0,k=0,r=-1;t[35]=t[28]=1;t[27]=t[36]=2;while(!d()||x&&k!=r){puts("x y");
scanf("%d %d",&x,&y);m=m?m:x?1:2;if(x||--x>7||--y>7||h(x+y*8,m))continue;if(d(
))break;k=r=(c++/2+x*8+y)%64;while(++k!=r&&h(k,3-m))if(k>64)k=0;}x=y=c=0;for(;
c<64;c++)if(p=t[c])p==1?x++:y++;printf("黒:%d 白:%d %s",x,y,x>y?"黒の勝ち":x<y
?"白の勝ち":"引き分け");}

12行までいけたけどもうやめるわ。すまんかったな

168:デフォルトの名無しさん
06/12/04 18:13:07
>>167
関数使いすぎ。
グローバル変数は仕様上自動的にゼロに初期化される。
セミコロン多すぎ、結果if文増えすぎ。
for文やwhile文多すぎ。これらは工夫で1つか2つまで減らせるはず。
breakやcontinue使うとかありえない。最初から構造をもっと考えて設計するといいと思う
番兵使おう。

別のお題で再挑戦頑張れ

169:デフォルトの名無しさん
06/12/04 18:13:49
自分からネタも出せない批評家気取りのクズは死ねばいいのに

170:デフォルトの名無しさん
06/12/04 18:16:14
より完成度の高い対戦オセロがでてくる『可能性』の芽をつぶしたバカ晒し上げ

>162 >164 >166

171:デフォルトの名無しさん
06/12/04 18:22:01
>>168
じゃーお題出してくれ

172:デフォルトの名無しさん
06/12/04 18:24:04
実際過疎気味だしオセロとか低レベルなのでもいいと思うけどね
新しい7erが現れるかもしれんし

>>138=>>163=>>165=>>167
なら少しくらい煽り耐性つけろよと言いたいがな

173:デフォルトの名無しさん
06/12/04 18:40:07
よくわからないけれど ここは荒んでいますね よくわかります

174:デフォルトの名無しさん
06/12/04 18:45:31
うお バグりまくり

175:デフォルトの名無しさん
06/12/04 18:58:10
#include <stdio.h>
typedef int n;n t[64]={0};n a(n i,n&g){n s=g%8;g+=("1987"[i%4]-48)*(i>3?-1:1);
return !((!s||s==7)&&s+g%8==7);}n h(n x,n m){n i=0,r=1,g=x;if(t[x])return 1;
for(;i<8&&a(i,g);i++,g=x){for(;t[g]==3-m&&a(i,g)&&g>=0&&g<64;){if(t[g]==m){
while(g!=x)a((i+4)%8,g),t[g]=m;r=0;}}}if(!r)printf("%s:%d %d\n",m==1?"黒":"白"
,x%8+1,x/8+1);return r;}n d(){n s=0,d,i=0;for(;i<64;i++){printf("□\0○\0●"+(
d=t[i])*3);if(i%8==7)puts("");s=s?d&&s!=d?3:s:d;}return s!=3;}void main(){n x=
1,y,p,m=0,c=0,k=0,r=-1;t[35]=t[28]=1;t[27]=t[36]=2;while(!d()||x&&k!=r){puts(
"x y");scanf("%d %d",&x,&y);m=m?m:x?1:2;if(x&&(--x>7||--y>7||h(x+y*8,m)))
continue;if(d())break;k=r=(c++/2+x*8+y)%64;while(++k!=r&&h(k,3-m))if(k>64)k=0;
}x=y=c=0;for(;c<64;c++)if(p=t[c])p==1?x++:y++;printf("黒:%d 白:%d %s",x,y,x>y?
"黒の勝ち":x<y?"白の勝ち":"引き分け");}

176:デフォルトの名無しさん
06/12/04 19:12:59
低レベルなのを上げられるくらいならいなくなったほうが・・・

177:デフォルトの名無しさん
06/12/04 20:06:25
低レベルなのも上げられないやつがいなくなったほうが

178:デフォルトの名無しさん
06/12/04 20:18:21
低レベルから高レベルに育っていく過程を見てみたいので期待age

179:デフォルトの名無しさん
06/12/04 21:04:04
七行(C)の心得

・ローカル変数は敵だ
・セミコロンも敵だ
・っていうか括弧も敵だ
・参考演算子は神

もっとある?

180:デフォルトの名無しさん
06/12/04 21:04:45
まちがえた。
○三項演算子
×参考演算子

181:デフォルトの名無しさん
06/12/04 21:05:20
なでしこは敵だ

182:デフォルトの名無しさん
06/12/04 21:19:59
再帰は敗北
番兵は勝利
7行プログラムは作る前から7行(構想と構造が大事)

183:デフォルトの名無しさん
06/12/04 22:58:03
> 7行プログラムは作る前から7行
なんか良く分かんないけど感銘を受けた

184:デフォルトの名無しさん
06/12/04 23:04:01
>>183
俺もだ
なんかこう…  深いよな

185:デフォルトの名無しさん
06/12/04 23:08:11
!「nakonet.nako」を取り込む。サーバーとはTCPサーバー。そのポートは80。サーバーを開始。
サーバーの受信した時は~
  サーバーの受信データを「 」で区切る。ファイル名はそれ[1]の「/」を「」に置換したもの。
  もし、ファイル名が空ならば、ファイル名は「index.html」。
  もし、ファイル名が存在するならば、ファイル名を開く。違えば、それは「なし」。
  内容は「HTTP/1.0 200 OK{改行}Content-Type: text/html{改行}{改行}{それ}」。(サーバーの相手IP)へ(内容)をサーバーで送信。
サーバーの送信完了した時は~サーバーの相手IPをサーバーが切断。


(^o^)ノ<HTTPサーバーできたぞー

186:デフォルトの名無しさん
06/12/04 23:14:16
>>185
7行なのはいいとして桁数オーバーしてないか?

187:デフォルトの名無しさん
06/12/04 23:17:53
>>186
(^o^)ノ<こっちだったぞー

!「nakonet.nako」を取り込む。
サーバーとはTCPサーバー。そのポートは80。サーバーを開始。
サーバーの受信した時は~サーバーの受信データを「 」で区切る。ファイル名はそれ[1]の「/」を「」に置換したもの。
  もし、ファイル名が空ならば、ファイル名は「index.html」。
  もし、ファイル名が存在するならば、ファイル名を開く。違えば、それは「なし」。
  内容は「HTTP/1.0 200 OK{改行}Content-Type: text/html{改行}{改行}{それ}」。(サーバーの相手IP)へ(内容)をサーバーで送信。
サーバーの送信完了した時は~サーバーの相手IPをサーバーが切断。

188:デフォルトの名無しさん
06/12/04 23:24:39
しかも、HTTPサーバって過去スレにあったよな

189:デフォルトの名無しさん
06/12/04 23:28:45
>>187
これがなでしこってやつなの?

>>188
だから(ry

190:デフォルトの名無しさん
06/12/04 23:37:33
既に誰かが解いたことのあるパズルってだけでやる気無くすのか?
そんなこたぁ無いだろー。

しかし、なでしこは初見だが、結構日本語風なんだな。びっくりした。

191:デフォルトの名無しさん
06/12/04 23:41:13
「メールホストを入力してください」と尋ねて、メールホストに代入。「メール差出人を入力してください」と尋ねて、メール差出人に代入。
「メール宛先を入力してください」と尋ねて、メール宛先に代入。「メール件名を入力してください」と尋ねて、メール件名に代入。
「メール本文を入力してください」で、メモ記入して、メール本文に代入。「いままでの内容が気に入らなければ、{改行}取消ボタンを押してください」を、「続行{改行}取消」のボタン選択。
もし、それが「続行」ならば、「メールホスト:{A}{改行}メール差出人:{B}{改行}メール宛先:{C}
メール件名:{D}{改行}メール本文:{E}{改行}{改行}送信します。」と言う。違えば、終了。
メール送信。「送信が終わりました」と言う。終了。


(^o^)ノ<最低限機能メール送信ソフトだぞー

192:デフォルトの名無しさん
06/12/04 23:42:04
^^;

193:デフォルトの名無しさん
06/12/04 23:51:40
利用リストとはリスト。その幅は400。退避ボタンとはボタン。退避リストとはリスト。その幅は400。利用ボタンとはボタン。更新処理。
●更新処理({=""}Fを{=""}Aから{=""}Bへ)
  もし、F≠空ならば、「{A}{F}」から「{B}{F}」へファイル移動。
  利用リストのアイテムは「{SENDTOパス}*」をファイル列挙。退避リストのアイテムは「{SENDTOパス}退避\*」をファイル列挙。
退避ボタンをクリックした時は~
  「{SENDTOパス}退避\」へフォルダ作成。利用リストをSENDTOパスから「{SENDTOパス}退避\」へ更新処理。
利用ボタンをクリックした時は~退避リストを「{SENDTOパス}退避\」からSENDTOパスへ更新処理。


(^o^)ノ<Windows送るメニューカスタマイズソフトだぞー

194:デフォルトの名無しさん
06/12/04 23:55:47
とても読みやすいんだけど、書きにくくないか?

195:デフォルトの名無しさん
06/12/04 23:59:24
なでしこは案外作り易そうだな

標準で使えるライブラリのサポートが多いせいもありそうだけど
1文字(2Byte)辺りの表現力が高いお陰なのかな

196:デフォルトの名無しさん
06/12/04 23:59:39
俺はCとか英語で書くの本格的にやったこと無いから、そっちの方が異次元だ
なでしこなら

「Hello,World!」を表示。

の一行だぜ

197:デフォルトの名無しさん
06/12/05 00:00:19
なでしこなんか貼るな、空気嫁

198:デフォルトの名無しさん
06/12/05 00:01:33
なでしこの中の人すげーな

>>197
おまえが空気読め

199:デフォルトの名無しさん
06/12/05 00:03:38
というか、連投されると有り難みが薄れるぜ
でもせっかくだから、作り易いなら正規表現辺りにチャレンジして欲しい

200:デフォルトの名無しさん
06/12/05 00:04:43
どうかんがえてもなでしこの方が空気読めてません。

201:デフォルトの名無しさん
06/12/05 00:06:06
なでしこの欠点は速度とか云々よりも”日本語”だから駄目だと言われた。
日本語らしさを追求するばかり、機械的な書き方が出来なくなる、と

しかし二重インタプリタという感じで、メモリも速度も重いんだぜ

202:デフォルトの名無しさん
06/12/05 00:11:12
C/C++得意な人に聞きたいんだけど
&&の代わりに&を使うテクニックがあったよね
どういうときに使えるか覚えている人いる?
ぐぐり辛い…

203:デフォルトの名無しさん
06/12/05 00:12:28
>>201
なでしこってインタプリタなの?( ゚д゚)

204:デフォルトの名無しさん
06/12/05 00:15:28
はいそうです

205:デフォルトの名無しさん
06/12/05 00:17:12
>>202
&&は前の式がtrueなら後ろの式が評価されないけど&は評価される
ただ&は演算結果がboolean値ではないので思わぬ結果を巻き起こしやすいので
&&から&に変える場合には最新の注意が必要

206:デフォルトの名無しさん
06/12/05 00:18:12
>>202 ビット積演算子

207:デフォルトの名無しさん
06/12/05 00:19:23
>>202
なんか作成中なのか?

208:デフォルトの名無しさん
06/12/05 00:29:40
>>205-206
さんくす
結構限定的っぽいですねえ

>>207
いや…自分はまだそんなレベルじゃないです
過去の作品とか見ながら文字数の減らし方とか考えていてふと思ったので…
でも何か出来たら持ってきます

209:デフォルトの名無しさん
06/12/05 00:45:21
||の代わりに|なら比較的ありがちなテクニック。
あと&&の代わりに*もありがち。ただこっちはオーバフローの危険あり

210:デフォルトの名無しさん
06/12/05 02:06:55
なでしこかよww ぱっと見て「なに構想語ってんの?」とか思ってしまった

211:デフォルトの名無しさん
06/12/05 06:36:36
まあまあ
7行なら良いじゃない

なでしこはその前身のひまわりより
書きにくいとも聞くがどうなんだろ

212:デフォルトの名無しさん
06/12/05 07:08:06
特に変わらないと思う
なでしこの処理速度はひまわりの十倍です

213:デフォルトの名無しさん
06/12/05 07:37:08
なでしこ面白いね
ただ七行にするためのテクニックを駆使するものではなさそうだけど

214:デフォルトの名無しさん
06/12/05 09:38:44
なでしこいいけど、1行80文字くらいは守ってもらおう

215:デフォルトの名無しさん
06/12/05 10:12:36
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ

216:デフォルトの名無しさん
06/12/05 10:34:18
>>215
一見ただの荒らしに見えるが、「なでしこ」という文字の中にひとつだけ
違うものが混じっている。探してみよう!















m9(^Д^)

217:デフォルトの名無しさん
06/12/05 12:01:37
随分ノリノリだな

218:デフォルトの名無しさん
06/12/05 17:45:46
TTSneoのことも思い出してあげて下さい

219:デフォルトの名無しさん
06/12/05 21:33:18
なにそれ?

220:デフォルトの名無しさん
06/12/05 21:41:03
なでしこのようなものです

221:デフォルトの名出しこさん
06/12/05 23:46:00
なでしこでインデント禁止だと辛いです。この間、テトリス作って15行でした。
>>191の真似してメール送信フォームです。

S="メールホストvメール差出人vメール宛先vメール件名vメール本文";C=~もし回数=5ならメール送信;終
S=(Sをvで区切)を全角変換;文字サイズ=16;反復,対象を9,回数*36-24へ文字表示;
ダイアログ数値変換=0;155,10へ移動;4回,E\回数をエディタとして作成;E[回数]→W=400
E\5をメモとして作成;E\5→W=400;E\5→H=230;母艦のタイトル="メール送信";送信とはボタン
その位置="560,365";そのクリック時=~Sで反復,EVAL(対象&「=E[{回数}]→テキスト」),C

222:デフォルトの名無しさん
06/12/06 03:47:10
>221
暗号臭くなって来て良い感じw

223:デフォルトの名無しさん
06/12/06 09:46:20
>>221
イイヨイイヨー

224:デフォルトの名無しさん
06/12/06 15:44:47
1行目の「終」はなでしこならではだね
ホントは「終わり」だったと思うけど
なでしこは漢字+送り仮名の命令に対して
助詞以外の送り仮名は飛ばす
Mindとかでもそうなってるハズ

225:デフォルトの名無しさん
06/12/13 08:49:50
>>221
ちょっとなでしこに興味湧いた


226:デフォルトの名無しさん
06/12/19 00:19:30
com2textを半角カナバージョンで、
ファイル指定は8.3形式で、
ゴミがつくのは仕様で、
実行は自己責任で。

H72タPQSVWP[Pクツツ0G=0GAs2A0GN1GP0GY0G[0Gg0Gl0Gv1Gy3ノア0T_)マ)マWセSテ、Iu>%
@3ロKCuフXセ}テ_="@3タャ,&|9uナ_^[Y3タテHP[アトャ<。xタ,0,0ムロムミェ<ノu,)ラ#
Oコ1ス60ニX@ス50ニ@Xスp01?Q1テ30シp0Jソp0ク@ル5キWuヒシ06Nニ@uフi[mコ4スウ06ニ@セ50コ*Oシ30スD51ニ@rタj
(UソD1[[2_Iノシ300Iタカネフネ+ヘNSl12WH2HオTj(ラネヘネヘpYチCコ1ニ@I_シ30カu_ネコ1ニ@T4jロVjシコ[1ス60ニ@
_ス50ニ@セ450ユウスC?0コ1ニ@コ-Oニ@コ1ス460ニ@ス550ニ@ニ@TXKIタXXY1[[X]Xシ?チチHSNH>SPiIPH4SWHSXH
BS\HS]H2ScHSfHdSkHSlIZトクHZ_DVヌDヌ[ソYTチイTjOB`65PIヘUJQjニ\ソnNチ_NAPIGタカFCnL^jツ__]\
LIタチTX]8クツカNーlGタFHFHネJヘネネオNトdjFDヒA6'5B0000'000000&

227:デフォルトの名無しさん
06/12/19 01:57:17
バイナリは誰かがためしてからじゃないと怖くて実行出来ないです><

228:デフォルトの名無しさん
06/12/19 02:20:51
誰かが試しても実行できないけど、自分自身をcom2textしているのはわかった。
行末の改行そのままでいいの?

229:デフォルトの名無しさん
06/12/19 12:45:39
>>228
やってみた。
・行末の改行はCRLFを残す
>>226の行末についてしまっている空白は取り除く
・JIS X0201
で。

コード表眺めて気がついたけどNOP使えないから小賢しい技はちょっと使いづらいね。

230:226
06/12/20 00:14:09
行末の空白をひとつだけ無視できるように。
ファイルにリダイレクトした時そのまま使えるように。
変な事してるっぽいけど気にしない。

H72タPQSVWP[Pクツツ0G;0G?s1KA0GP1GR0G[0G]0Gi0Gn0Gz3ノア0T_)マ)マWセTテ、Iu>5
4@3ロCAKuフXセ}テ_="54@ャ,&|9uナ_^[Y3タテHP[アトャ<。xタ,0,0ムロムミェIu-tル######Xスp01?Q1テ30シp0
Jソp0ク@ル5キWuヒシ06Nニ@uフi[gコ4スァ0.ニ@セ10コ*Oシ30ス951ニ@rタj(Uソ91[[2_Iノシ300Iタカネフネ+ヘNSl12
WH2HオTj(ラネヘネヘpYチCコ1ニ@I_シ30カu_ネコ1ニ@T4jロVjシコ[1ス60ニ@_ス50ニ@セ450ユウスC?0コ1ニ@コ5Oニ@ニ@T
XKIタXXY1[[X]Xシ?チチHSMHfSOiHUPAHSXHSY]HS]HS^=HSdHSgaHSmIトクcHZ_DヌD:ヌ[ソZチイBTjOJ65
cJPIヘQPJUjニ\ソn>チ_NAJJGPカFCnL^jツ__]\LIタチTX]8クツカNーlGタFHFHネZヘネネオTjdFjフAAA.AAAB00&

231:デフォルトの名無しさん
06/12/20 00:55:25
>>230
カタカナ無しは無理かな?int 21hのどこかが必ずカタカナに抵触しそうかな。
確かCD 21だったよね

232:デフォルトの名無しさん
06/12/20 22:17:27
変換効率が3/2とかなら簡単だろうけど、4/3だと難しそう。
intよりもmovやシフトが使えないのが痛い

233:デフォルトの名無しさん
07/01/02 01:21:25
07年age

234:デフォルトの名無しさん
07/01/18 18:49:08
保守がてら

参考リンク
URLリンク(www.4dm.org)

7行ネタが思い付かない人は、PKUに挑戦してみるのだ

235:デフォルトの名無しさん
07/01/19 00:32:26
>>234
面白いものつくってなーw


236:デフォルトの名無しさん
07/01/19 05:22:24
アセンブラ用に使えるニモニックの一覧表ってどこにあるんだっけ


237:デフォルトの名無しさん
07/01/19 10:43:21
>>236
石は……?

238:デフォルトの名無しさん
07/01/19 11:34:14
適当なバイナリ作って逆汗

239:デフォルトの名無しさん
07/01/19 16:33:39
>>236
アセンブラのソースコードでも読めば。

240:デフォルトの名無しさん
07/01/22 21:26:35
>>234
A+B Problemからわからんorz

241:デフォルトの名無しさん
07/01/23 19:04:29
>>240
問題のヒントに答えが書いてありますがな

242:240
07/01/23 19:43:36
>>241
さすがに答えはわかるwそうじゃなくて、どうやって短く書いてんのかがさっぱりわからんってこと。

243:デフォルトの名無しさん
07/01/23 19:52:47
>>242
参考程度に昔自分が書いてたコード
main(n){gets(&n);putchar(n%85+5);}
これはAとBの合計が10未満で、
入力の1Byte目がA,2byte目が空白,3byte目がB,4byte目が改行|EOFのときだけ動く。
今はテストケースが改善されて10以上もあるから通らないけどな。

244:デフォルトの名無しさん
07/01/24 19:14:12
C#でブロックソート書いてみた。

using System;using System.Collections.Generic;namespace BWT{public static
class BlockSort{public static int Sort(ref byte[]data){int l=data.Length,i=1,j
;byte[][]t=new byte[l][];t[0]=data;for(;i<l;i++){t[i]=new byte[l];for(j=1;j<l;
j++){t[i][j]=t[i-1][j-1];}t[i][0]=t[i-1][l-1];}Array.Sort<byte[]>(t,new Comp()
);i=Array.IndexOf<byte[]>(t,data);for(j=0;j<l;j++){data[j]=t[j][l-1];}return i
;}}class Comp:IComparer<byte[]>{public int Compare(byte[]x,byte[]y){int r=0,l=
x.Length,i=0;for(;i<l;i++){r=(int)(x[i]-y[i]);if(r!=0)i+=l;}return r;}}}

ジャグ配列のソートを自前で実装するのは行数的に厳しいです orz
修行が足りません。

245:244
07/01/24 19:41:10
同じくソート解除

using System;using System.Collections.Generic;namespace DBWT{struct DE{public
DE(int i,byte d){Ind=i;Data = d;}public int Ind;public byte Data;}public
static class DeBlockSort{public static void Restoration(int ind,ref byte[]data
){int i,l=data.Length;DE[] de=new DE[l];for(i=0;i<l;i++){de[i]=new DE(i,data[i
]);}Array.Sort<DE>(de,new Comp());for(i=0;i<l;i++){data[i]=de[ind].Data;ind=
de[ind].Ind;}}}class Comp:IComparer<DE>{public int Compare(DE x,DE y){if(x
.Data != y.Data){return(int)(x.Data-y.Data);}else{return x.Ind-y.Ind;}}}}


やっぱりまだまだです orz

246:デフォルトの名無しさん
07/01/24 20:24:34
perl -e "for(;;){print eval<STDIN>}"

インタラクティブパールできたよー

247:デフォルトの名無しさん
07/01/24 20:31:50
引数何も無しでおkだから、さ

248:デフォルトの名無しさん
07/01/24 21:10:17
perl -pe '$_=eval$_'
これで十分だろと

249:デフォルトの名無しさん
07/01/24 21:12:09
それは長すぎ。
perl -pe "$_=eval($_)"
で十分。

250:249
07/01/24 21:13:27
被った上に()の分負けてるー
orz

251:デフォルトの名無しさん
07/01/25 02:49:12
perl -pe 'eval$_'

でいいんじゃない?

252:デフォルトの名無しさん
07/01/25 11:45:00
これって標準入力を評価して標準出力に出力するってこと?
具体的にどういう使い方があるの?

253:デフォルトの名無しさん
07/01/25 13:43:07
irb のように使う?

254:デフォルトの名無しさん
07/01/25 23:44:26
電卓がわりとかじゃね?

255:デフォルトの名無しさん
07/01/26 00:44:33
あなたの実家に腐ったイカを送りましたよ

256:デフォルトの名無しさん
07/01/26 19:59:39
ある変数が マイナスだったら-1、プラスだったら1 に変換するCの式
if( a<0 ){
 a=-1;
}else if( a>0 ){
 a=1;
}else{
 a=0;
}
を、なんか格好よく書くには どんな本を読んで勉強するべきでしょうか?

257:デフォルトの名無しさん
07/01/26 20:12:38
>>256
(a>0)-(a<0)
(a>=0)-(a<=0)
(a>>31)|((unsigned)-x>>31) (算術シフト前提)

258:デフォルトの名無しさん
07/01/26 20:19:16
まず中1の数学の教科書だと思う。
a = a ? -1 * ( a / a ) : a;


259:デフォルトの名無しさん
07/01/26 20:22:10
あ、ちがった。ゴメン。
a = a > 0 ? 1 : ( a < 0 ? -1 : 0 );
とか。

260:256
07/01/26 21:08:24
>>258
ヒントありがとう

a = (a>0)-(a<0);
までがんばれたっぽい。

261:デフォルトの名無しさん
07/01/27 00:10:37
>>260 >>257の一番上

262:デフォルトの名無しさん
07/01/27 01:55:23
もうすこし短くならない?

263:デフォルトの名無しさん
07/01/27 01:56:35
そういう関数があったと思ったが・・・

264:デフォルトの名無しさん
07/01/27 01:58:51
これ以上はむりじゃね?

265:デフォルトの名無しさん
07/01/27 06:43:02
>>179の心得に従ってみた
a=a>0?1:-!!a

266:デフォルトの名無しさん
07/01/27 10:13:35
>>183に従え

267:デフォルトの名無しさん
07/01/27 14:25:48
>>265
スパシーバ

268:デフォルトの名無しさん
07/01/27 16:11:59
>>265
:-!!
監禁されてガムテープで口縛られてるみたいだぞ

269:デフォルトの名無しさん
07/01/27 16:43:12
a=a>0||-!!a;

↑ってどう?

270:デフォルトの名無しさん
07/01/27 17:35:56
a=5のときどうなる?

271:デフォルトの名無しさん
07/01/27 17:44:36
>>269
正しく動かない。
main(){
int a = -5;
a=a>0||-!!a;
assert(a==-1);
return 0;
}

272:デフォルトの名無しさん
07/01/27 17:54:52
あ、そっか0か1にしかなんねーじゃん

273:デフォルトの名無しさん
07/01/27 18:04:00
まだそんなこと言ってるの?
アホが1匹まじってますよ~

274:デフォルトの名無しさん
07/01/27 18:09:37
短い順

a=a>0?1:-!!a; //13
a=(a>0)-(a<0); //14
a=a>=0+(a>0)-1; //15
a=(a>=0)-(a<=0); //16
a=a>0?1:a<0?-1:0; //17

275:デフォルトの名無しさん
07/01/27 18:11:14
>>274
3つ目はカッコないとだめだろ
a=(a>=0)+(a>0)-1; //17

276:デフォルトの名無しさん
07/01/27 18:13:46
a>0が真のとき値は必ず-1になるんですか?

277:デフォルトの名無しさん
07/01/27 18:16:09
間違えた
1desu

278:デフォルトの名無しさん
07/01/27 21:01:51
環境によるんじゃないかなぁ、実のところ。

279:デフォルトの名無しさん
07/01/27 23:27:29
今までの作品見てて思ったんだが、音物ってまだでてないね。
やっぱりヘッダだけでもかなり文字数食うのかな。

280:デフォルトの名無しさん
07/01/27 23:37:20
>>279
1行食うからな…

でもwindows.hだけでbeep音は鳴らせるよな?

281:デフォルトの名無しさん
07/01/28 00:09:18
10 BEEP

282:デフォルトの名無しさん
07/01/28 00:25:02
>>279
昔のMSXとかBASIC見たいにMML鳴らせればねえ

283:デフォルトの名無しさん
07/01/28 00:58:37
10 PLAY ALLOC 0: PLAY "CDEFG"

284:デフォルトの名無しさん
07/01/28 02:23:05
cygwinとかbsd系でdsp使える環境
#include <sys/ioctl.h>
#include <fcntl.h>
int main(void){int rfd,dfd;char buf[1024];rfd=open("/dev/random",O_RDONLY);dfd=
open("/dev/dsp",O_WRONLY);while(1){read(rfd,buf,1024);write(dfd,buf,1024);}}

音なるよ

285:デフォルトの名無しさん
07/01/28 02:42:59
それで4行なら7行で方形波生成+メロディ位いけるんじゃないか?

286:デフォルトの名無しさん
07/01/28 02:48:27
>>284
read, write未定義って言われる・・・

287:デフォルトの名無しさん
07/01/28 02:50:37
cygwinいれんのマンドクセ
会社行ったらやってみよ

288:デフォルトの名無しさん
07/01/28 02:51:01
#include <unistd.h>
か、
すげーーーーー音なった!!


289:デフォルトの名無しさん
07/01/28 02:52:09
ちなみに、cygwinです。

290:デフォルトの名無しさん
07/01/28 02:54:11
ちなみにどんな音がなるんだ?

291:デフォルトの名無しさん
07/01/28 02:56:16
いや、ノイズだよ。
ザーって。

292:デフォルトの名無しさん
07/01/28 02:56:56
/dev/random辺りから察して砂嵐だろう

293:デフォルトの名無しさん
07/01/28 02:57:52
ボリュームに気をつけたほうがいい。いつもので行ったら死にそうになった。

294:デフォルトの名無しさん
07/01/28 02:58:00
なんだ
ランダムだからどんなんかな~と思ったけど、一音そんなに短いのか

295:284
07/01/28 02:58:13
>>288 thx
>>290 /dev/randomから読み取ってdspに直書きしてるだけだから>>291です
単一の音色のソフトシンセくらいなら作れる可能性があるね7行で

296:デフォルトの名無しさん
07/01/28 02:59:21
/dev/dspってすげーな。

> cat /cygdrive/c/WINDOWS/Media/tada.wav > /dev/dsp

普通にwav鳴らせるんだ・・・

297:デフォルトの名無しさん
07/01/28 03:00:55
こんな時間に人が沸いてきた方が驚きなんだけど。仕事中か?

298:デフォルトの名無しさん
07/01/28 03:00:59
ああ、>>ちなみにcygwinのコマンドラインで
cat /dev/random > /dev/dsp
などとしても音なるよ
同じことです

299:デフォルトの名無しさん
07/01/28 03:03:29
>>296
んだんだ
cygwinのdspさんはwaveファイルも使えるんだ

あとioctl()とか使ってサンプリングレートとかチャンネル数とか変えれるから、
ちょっと気張ればネット越しに音鳴らすサウンドサーバが出来る
mixingも自力で頑張ればウハウハ

コード自体はfreebsdでも動くから、bsd機をpxebootで起動させればHDDいらずで(ry


300:デフォルトの名無しさん
07/01/28 03:36:23
#include <windows.h>
int d[]={659,195,2,739,184,2,783,164,4,739,220,2,659,220,2,622,246,4,659,220,2,
739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,184,2,523,184,2,493,195,4
,440,220,2,391,220,2,361,246,4,391,220,2,440,220,2,493,195,2,440,195,2,391,246,
2,361,246,2,329,164,2,329,184,2,659,195,2,739,184,2,783,164,4,739,220,2,659,220
,2,622,246,4,659,220,2,739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,1\
84,2,523,184,2,493,195,4,440,220,2,391,220,2,369,293,6,391,293,2,391,195,8};vo\
id b(int x,int y, int z){if(y){for(int i=0;i<z/50;++i){Beep(x,25);Beep(y,25);}}
else{Beep(x,z);}Sleep(0);}int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){fo\
r(int i=0;i<sizeof(d);i+=3)b(d[i],d[i+1],d[i+2]*100);return 0;}
ノートが周波数そのままなので、七行超えてしまた。Beep()で音が鳴るPCでどうぞ。
Bio_100%の蟹味噌のインスパイアです。

301:デフォルトの名無しさん
07/01/28 03:53:05
>>300
すげー、ピコピコなってるよ・・・

かに味噌なつかしす( ´ー`)



302:300
07/01/28 04:30:09
#include <windows.h>
int d[]={659,195,2,739,184,2,783,164,4,739,220,2,659,220,2,622,246,4,659,220,2,
739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,184,2,523,184,2,493,195,4
,440,220,2,391,220,2,361,246,4,391,220,2,440,220,2,493,195,2,440,195,2,391,246,
2,361,246,2,329,164,2,329,184,2,659,195,2,739,184,2,783,164,4,739,220,2,659,220
,2,622,246,4,659,220,2,739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,1\
84,2,523,184,2,493,195,4,440,220,2,391,220,2,369,293,6,391,293,2,391,195,8};vo\
id b(int x,int y, int z){for(int i=0;i<z/50;++i){Beep(x,25);Beep(y,25);}}int W\
INAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){for(int i=0;i<sizeof(d)/sizeof(in\
t);i+=3)b(d[i],d[i+1],d[i+2]*100);return 0;}
酷いバグを直して19バイト削減。曲データ抜きなら4行だから、まぁアリってことにしてくださいm(__)m

303:300
07/01/28 04:53:31
あ、横が80文字になってるし。WinMainのintは省略できるし、b()なんて
関数化する必要ないし。漏れアホス、回線切って首吊ってきます

304:デフォルトの名無しさん
07/01/28 09:21:18
>>300の真似をしてみました。
VC8以外でコンパイルできるかは不明なり。
#include <windows.h>
char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643"
"134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46"
"894449991335566116611; 113344 4445454;;;9998886664441111111",c[]="888888822"
"2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422"
"4224224224444";int x[99],i,j=32;main(){float s=110;while(j<99)x[j++]=s*=1.05\
95;for(j=0;a[i];++i,j=0)while(j++<c[i]-48)Beep(x[a[i]],30),Beep(x[b[i]],30);}


305:デフォルトの名無しさん
07/01/28 09:31:50
げ、スペースが一箇所詰まってしまた。

#include <windows.h>
char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643"
"134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46"
"894449991335566116611; 113344  4445454;;;9998886664441111111",c[]="888888822"
"2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422"
"4224224224444";int x[99],i,j=32;main(){float s=110;while(j<99)x[j++]=s*=1.05\
95;for(j=0;a[i];++i,j=0)while(j++<c[i]-48)Beep(x[a[i]],30),Beep(x[b[i]],30);}

これでちゃんと鳴る……といいな。


306:デフォルトの名無しさん
07/01/28 09:39:48
>>296
ワロス

知らんかった

307:デフォルトの名無しさん
07/01/28 09:57:20
>>305
鳴ったよー。gcc cygwin で確認

308:279
07/01/28 10:24:12
言った本人が何もしないのもあれなので作ってみたが、
レベル高すぎて投下する気なくす…orz

309:デフォルトの名無しさん
07/01/28 10:38:30
>>305
すげーww
なんかめちゃくちゃなつかしい

310:デフォルトの名無しさん
07/01/28 11:42:10
>>305
bcc5.5だと
1.05\
95;
の部分がエラーになったんだけど、直したら聞けました。つーかすげーこれww

311:デフォルトの名無しさん
07/01/28 12:04:42
#include <unistd.h>
#include <fcntl.h>
char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643"
"134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46"
"894449991335566116611; 113344  4445454;;;9998886664441111111",c[]="888888822"
"2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422"
"4224224224444";int x[99],d,i,j=32,k=8000,l=8;m(a,b,s){char r[4096];s*=2;a=k/a
;b=k/b;for(j=s;j--;)r[j]=(!(j%a)+!(j%b))*32;write(d,r,s);}main(){float s=1\
10;while(j<99) x[j++]=s*=1.0595;d=open("/dev/dsp",2);for(i=0;a[i];m(x[a\[i]],\
x[b[i]],30*c[i]-48),++i);}

>>305
がんばったけど、7行に出来ない(orz
とりあえず音はなるけど、和音とかしらんので鳴るだけでいいと思ってる (´・ω・` ス

312:デフォルトの名無しさん
07/01/28 12:12:40
>>311
#include <unistd.h>
#include <fcntl.h>
char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643"
"134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46"
"894449991335566116611; 113344  4445454;;;9998886664441111111",c[]="888888822"
"2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422"
"4224224224444";int x[99],d,i,j=32,k=8000,l=8;m(a,b,s){char r[4096];s*=2;a=k/a
;b=k/b;for(j=s;j--;)r[j]=(!(j%a)+!(j%b))*32;write(d,r,s);}main(){float s=110;
while(j<99) x[j++]=s*=1.0595;d=open("/dev/dsp",2);for(i=0;a[i];m(x[a[i]],x[b[\
i]],30*c[i]-48),++i);}

こうだな

313:デフォルトの名無しさん
07/01/28 12:18:47
#include <unistd.h>
#include <fcntl.h>
char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643"
"134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46"
"894449991335566116611; 113344  4445454;;;9998886664441111111",c[]="888888822"
"2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422"
"4224224224444";int x[99],d,i,j=32,k=8000,l=8;m(a,b,s){char r[4096];for(j=s;j\
--;)r[j]=(!(j%a)+!(j%b))*32;write(d,r,s);}main(){float s=110;while(j<99) x[j+\
+]=k/(s*=1.0595);d=open("/dev/dsp",2);for(i=0;a[i];m(x[a[i]],x[b[i]],60*c[i]-
96),++i);}

>>312もうちょっと
後はデータをファイルに持たせるとか…か

314:デフォルトの名無しさん
07/01/28 12:21:34
>>311-313
dsp1.cpp:7: error: expected constructor, destructor, or type conversion before '(' token
dsp1.cpp:7: error: expected `,' or `;' before '(' token
dsp1.cpp: In function `int main()':
dsp1.cpp:7: warning: converting to `int' from `float'
dsp1.cpp:10: error: `m' undeclared (first use this function)
dsp1.cpp:10: error: (Each undeclared identifier is reported only once for each function it appears in.)
dsp1.cpp:10:11: warning: no newline at end of file

って、出る('A`)

315:デフォルトの名無しさん
07/01/28 12:25:41
m(a,b,s){
多分、この書き方なんですけど、これってCでいいんですか?

316:デフォルトの名無しさん
07/01/28 12:31:09
>>284に戻るけど…

using System;using System.IO;class Program{static void Main(string[]args){try{
int i=int.Parse(args[1]);byte[]h=new byte[]{82,73,70,70,36,0,(byte)i,0,87,65, 
86,69,102,109,116,32,16,0,0,0,1,0,1,0,68,172,0,0,68,172,0,0,1,0,8,0,100,97,116
,97,0,0,(byte)i,0};using(FileStream f=new FileStream(args[0],FileMode.Create))
{f.Write(h,0,44);h=new byte[i*65536];Random r=new Random(DateTime.Now.Second);
r.NextBytes(h);f.Write(h,0,i*65536);}}catch{Console.Write("Error");}}}

使い方:
hoge.exe savepath length
長さは(0~255)*65536Bでつ。

317:デフォルトの名無しさん
07/01/28 12:56:06
>>302
require"base64";require'zlib';require"Win32API";$o=Win32API.new("kernel32","B\
eep",%w(i i),'v');def b(x,y,z)(0...z/50).map{$o.call x,25;$o.call y,25}end;b=
"eJybzHSYgYnhMdMOIMnPvISBBci+A2RPBpN5TN+AIhA2RPwt42GgiBZYfR6Y\nnMwE0uUNZnODSY\
iaHYwg9e1gMpMRZA6EDREHqQGxD4PVfIOqYWLwZFwCJiEm\n08NthYyqjGxAtiojSOQwAwcDAE8gP\
SA=\n";d=Zlib::Inflate.inflate(Base64.decode64(b)).unpack("S*");(0...d.size/3
).map{|i|i*=3;b d[i],d[i+1],d[i+2]*100}

ワーイ。rubyで、6行できたよー。

318:デフォルトの名無しさん
07/01/28 13:14:40
>>314
C++じゃなくてCで

>>315
暗黙に int とみなされる

319:デフォルトの名無しさん
07/01/28 13:38:54
>>318
なったよw

320:デフォルトの名無しさん
07/01/28 13:41:13
>>313
データをファイルに持たせるのはルール違反

321:デフォルトの名無しさん
07/01/28 13:54:52
beep ついてねーよヽ(`Д´)ノウワァァン
ということで cygwin 専用 beep エミュ。
音程が合わない時は BASE_FREQを適当に調整してください。

#include <windows.h>
#include <stdio.h>
#define BASE_FREQ8000
WINAPI BOOL Beep(DWORD freq, DWORD time){int t,tf,dt;static FILE *fp=0;if(!fp)
fp=fopen("/dev/dsp","wb");if(!freq||freq>BASE_FREQ/2)tf=0x7fffffff;else tf=
BASE_FREQ/2/freq;for(t=0;t<time*BASE_FREQ/1000;t++){dt=((t/tf))%2?127:0;fwrite
(&dt,1,1,fp);}fflush(fp);return TRUE;}

322:321
07/01/28 14:31:09
無駄が多すぎた。
#include <windows.h>
#include <stdio.h>
FILE *p;WINAPI BOOL Beep(DWORD f, DWORD m){int B=4000,t=0,g,d;p=p?p:fopen("/de"
"v/dsp","wb");g=!f||f>B?(1<<31)-1:B/f;for(;t<m*B/500;t++){d=t/g%2?127:0;fwrite(
&d,1,1,p);}fflush(p);return TRUE;}

323:デフォルトの名無しさん
07/01/28 16:23:05
Cの&& ||ってショートサーキット評価だっけ?

324:デフォルトの名無しさん
07/01/28 16:26:07
そうだぜ

325:デフォルトの名無しさん
07/01/28 16:32:51
thx
もう少し縮められそうだ

326:305
07/01/28 16:54:21
おー、なんか皆がんばっとる!('ω`*)
徹夜して作った甲斐がありました!

327:デフォルトの名無しさん
07/01/28 17:24:11
標準入力からMMLを読んでビープで再生する
A-G: 音符; R: 休符 (数値を後置して長さ, ドットを後置して付点)
Tn: Tempo; Ln: Length
On: Octave (n=0-7); >: Octave+; <: Octave-

#include <stdio.h>
#include <windows.h>
int r,c,d,n,j,a,o=4,l=4,t=120,f[84],g[]={0,2,3,5,7,8,10};w(a){ungetc(a,stdin);
}y(){return getchar();}float s=27.5;q(int*p){for(r=0;'0'<=(d=y())&&d<='9';)r=r
*10+d-'0';w(d);r?*p=r:0;}main(){for(;j<84;j++,s*=1.0595)f[j]=s;while((c=y())!=
EOF)c+=c<'a'||'z'<c?0:'A'-'a','A'<=c&&c<'H'||c=='R'?c-'R'?a=g[c-'A']+12*o,(d=y
())=='+'||d=='#'?a+=a!=83:d=='-'?a-=!!a:w(d):0,n=l,q(&n),j=120000*((d=y())-'.'
?w(d),2:3)/t/n,c-'R'?Beep(f[a],j):Sleep(j):c=='L'?q(&l):c=='O'?q(&o),o=o>7?7:o
:c=='T'?q(&t):c=='>'?o+=o!=7:c=='<'?o-=!!o:0;}//9行47桁

俺の力ではこれ以上短くできない…orz

328:デフォルトの名無しさん
07/01/28 17:35:05
あら。一行78文字になってた

#include <stdio.h>
#include <windows.h>
int r,c,d,n,j,a,o=4,l=4,t=120,f[84],g[]={0,2,3,5,7,8,10};w(a){ungetc(a,stdin);}
y(){return getchar();}float s=27.5;q(int*p){for(r=0;'0'<=(d=y())&&d<='9';)r=r*\
10+d-'0';w(d);r?*p=r:0;}main(){for(;j<84;j++,s*=1.0595)f[j]=s;while((c=y())!=E\
OF)c+=c<'a'||'z'<c?0:'A'-'a','A'<=c&&c<'H'||c=='R'?c-'R'?a=g[c-'A']+12*o,(d=y()
)=='+'||d=='#'?a+=a!=83:d=='-'?a-=!!a:w(d):0,n=l,q(&n),j=120000*((d=y())-'.'?w(
d),2:3)/t/n,c-'R'?Beep(f[a],j):Sleep(j):c=='L'?q(&l):c=='O'?q(&o),o=o>7?7:o:c==
'T'?q(&t):c=='>'?o+=o!=7:c=='<'?o-=!!o:0;}

329:デフォルトの名無しさん
07/01/28 17:56:04
ソース解読するための
整形ツールって無いですか?

330:デフォルトの名無しさん
07/01/28 17:56:22
時代が20年くらい巻き戻ったな、このスレ

331:デフォルトの名無しさん
07/01/28 17:56:33
GNU Indentは?

332:デフォルトの名無しさん
07/01/28 18:31:01
>>331
いけました。サンクス

333:デフォルトの名無しさん
07/01/28 21:03:16
>>329
過去スレに7行のもあった希ガス

334:デフォルトの名無しさん
07/01/28 22:42:27
'A' とかは数字の即値で書いたほうが短そう

335:デフォルトの名無しさん
07/01/28 22:48:24
>>284
BSD系って君が言ったから

OSXは、/dev/dspねぇ。。

336:デフォルトの名無しさん
07/01/28 22:50:04
>>334
上でも出てるがそりゃ邪道だ

337:デフォルトの名無しさん
07/01/28 23:04:34
>>335
多分あるよ。
FreeBSD5のカーネル付近から/dev/以下は自動的に作られるから。
ls -l /dev/dsp ってやってみて

それでもnot foundならkldload snd_driverでカーネルにサウンドドライバロードさせてみて
で、 ls -l /dev/dsp

338:デフォルトの名無しさん
07/01/28 23:19:02
>>336
そんなん言ったら数字とか英字の判断は、
C的にはisdigitとかisalphaを使うべきとこだよ。
>'0'<=(d=y())&&d<='9';
isdigit(d=y());
こっちのほうが圧倒的に短いし。


339:デフォルトの名無しさん
07/01/28 23:23:16
#includeディレクティブが一行食うから
よほど文字種判別ばかりやってるコード
じゃないと短くはならんでしょ

340:デフォルトの名無しさん
07/01/28 23:30:01
>>338
テレックスで用いられるようなアルファベットが連続していない文字コードを考慮すると
'A'<=c&&c<'H'||c=='R'

'A'==c||'B'==c||'C'==c||'D'==c||'E'==c||'F'==c||'G'==c||'R'==c
ないし
!('A'-c||'B'-c||'C'-c||'D'-c||'E'-c||'F'-c||'G'-c||'R'-c)
と書かないといけないのか。
流石にこのスレ的にはつらいな

341:デフォルトの名無しさん
07/01/28 23:31:26
!('A'-c&&'B'-c&&'C'-c&&'D'-c&&'E'-c&&'F'-c&&'G'-c&&'R'-c) だた

342:デフォルトの名無しさん
07/01/28 23:58:46
>>339
うちの環境だと #include<stdio.h> すれば問題なかった……っていうと、
これも邪道かなー。正しくは #include<ctype.h> だし。
どのみち環境に対して何の仮定もおかないで書くのはつらい。
mainでreturnしないのも本来問題あるわけだし。
まー、最終的には個人の裁量だから、この話題はヤメにしよう。宗教論争になりそうだ。

343:デフォルトの名無しさん
07/01/29 00:15:11
print"第一数字(半角数字で入力してください):";i=gets.to_i;print"第二数字(半角数\
字で入力してください):";j=gets.to_i;puts"\n足し算:%g + %g = %g"%[i,j,i+j],"引\
き算:%g - %g = %g"%[i,j,i-j],"掛け算:%g * %g = %g"%[i,j,i*j],"べき算:%g の %g\
乗 = %g"%[i,j,i**j]

ワーイ、rubyで4行、け言語できたよー。

344:デフォルトの名無しさん
07/01/29 03:05:51
>>343
毛言語とはまた怪訝な言語じゃの

345:デフォルトの名無しさん
07/01/29 13:22:28
めそ

346:デフォルトの名無しさん
07/01/29 13:39:59
モキュ

347:デフォルトの名無しさん
07/01/30 08:57:38
和音に挑戦しようと思ったんじゃが
乗り遅れたか


348:デフォルトの名無しさん
07/01/30 11:13:16
キー押して音鳴らすようなの作れそうじゃね?

349:デフォルトの名無しさん
07/01/30 22:38:47
今更ながら>>305に感動

350:305
07/02/01 01:13:43
本体部分を50バイト削減ー。
でもデータ作成に挫折った。キリのいいところまで入らない。

#include <windows.h>
char a[]=" 747:7:@:@C@AC@ACCCCCC<7<7HFHLOMLJLMLHJCJCJLMOQOMLMOTOMHHLMOOHJLMOQ"
"QTSQOOOOONMMMLLLJHGEGEC",b[]=" 747747:7:@:>@:>@>7542<7<7<<77<77>>>77>7>>77>>"
">77<<<777<7<<7:77755<<<55789:;<=>?@ABCCC>>>7",c[]="1822822822222222<<6666666"
"62442642222426624422224222222266426622242642422222222222222222228";float f(i)
{return i?f(i-1)*1.0595:55;}main(i,t){for(i=t=0;c[i]&&(t--||(t=c[++i]-*c));Be\
ep(f(b[i]-*b),40))Beep(f(a[i]-*a),40);}


351:デフォルトの名無しさん
07/02/01 01:18:38
(t--||(t=c[++i]-*c)って鼻から悪魔出ないか?

352:デフォルトの名無しさん
07/02/01 01:23:55
||は副作用ぶった切るから大丈夫だよ

353:デフォルトの名無しさん
07/02/01 01:29:56
f()を数えてなかった……。訂正、10バイト削減。

354:デフォルトの名無しさん
07/02/01 01:30:37
>>351
--が前置演算子だと動かないね。

355:デフォルトの名無しさん
07/02/01 01:50:03
本当に20年前に戻った気がするな・・・

356:デフォルトの名無しさん
07/02/01 03:11:00
>>351
鼻から悪魔が出る って表現気に入った

357:デフォルトの名無しさん
07/02/01 10:56:16
>>356
常套句。鼻から悪魔で検索してみろ

358:デフォルトの名無しさん
07/02/01 11:48:49
なるほど。生まれる前から言われてた言葉だったのか。
勉強になるなぁ。

359:デフォルトの名無しさん
07/02/01 12:03:57
351は鼻から悪魔が出るんじゃないかな。

360:デフォルトの名無しさん
07/02/01 18:29:14
出ないでない

361:デフォルトの名無しさん
07/02/01 18:30:34
351なら出ても仕様違反ではないけどな

362:デフォルトの名無しさん
07/02/01 18:45:17
どこが悪いの?

363:デフォルトの名無しさん
07/02/01 18:52:07
>>361
> c[i]&&(t--||(t=c[++i]-*c))
||はsequence pointだからt--とt=c[++i]-*cはこの順に値の変更が行われることが保証されてる

364:305
07/02/01 23:42:07
副作用完了点とか意識してなかったわ('д`)

365:デフォルトの名無しさん
07/03/04 18:06:55
int puts(const char*);int main(void){return puts("age")<0;}

366:デフォルトの名無しさん
07/03/04 18:12:19
かなりの趣味スレですね

367:デフォルトの名無しさん
07/03/04 18:19:55
ageるからには何かネタないの?

368:デフォルトの名無しさん
07/03/04 18:24:12
>>365
ネタもなしにあげとはずいぶんなおまーんこですね
↑この一文を解釈して動くプログラミング言語を作ってくれ

369:デフォルトの名無しさん
07/03/04 19:13:21
宣言だけ書いとけば、使ったライブラリを勝手にリンクしてくれる、と解釈。
つまりincludeの省略か。
しかしそんなもん俺に作れるわきゃーない。

370:デフォルトの名無しさん
07/03/04 19:16:36
Cの話なら、#includeしなくても直にプロトタイプ宣言すれば済むじゃん?

371:デフォルトの名無しさん
07/03/04 21:44:22
(・д・)どのCの話だ?

372:デフォルトの名無しさん
07/03/04 21:53:15
#includeディレクティブとリンカがどのライブラリをリンクするかは関係ないでs

373:デフォルトの名無しさん
07/03/04 22:58:55
#DEFINE ネタもなしにあげとはずいぶんなおまーんこですね main(){return(0);}

374:デフォルトの名無しさん
07/03/04 23:02:34
このスレではreturnに括弧つけるのは許されないだろ、常識的に考えて…

375:デフォルトの名無しさん
07/03/05 04:16:30
って言うか生きてたんだなおまいら。

376:デフォルトの名無しさん
07/03/05 07:42:48
main関数でreturnしなかった場合、
戻り値は0になると決められているから、
return(0);は書く必要すらない。
-10文字

377:デフォルトの名無しさん
07/03/06 01:23:37
どんな処理系だそれは。

% cat test.c
#include <stdio.h>
main(void){printf("hello, world\n");}

% gcc -ansi -pedantic test.c

% ./a.exe
hello, world

% echo $?
13


それとも、言ってるのはこういう意味じゃない?


378:デフォルトの名無しさん
07/03/06 01:27:49
>>377
gcc -std=c99 -pedantic test.c

379:デフォルトの名無しさん
07/03/06 01:35:29
99じゃしょうがないな


380:デフォルトの名無しさん
07/05/01 07:42:12
age

381:デフォルトの名無しさん
07/05/01 15:53:57
WinMainって
int WINAPI WinMain(HMODULE,HMODULE,LPSTR,int)
これじゃだめなのかな
bcc5.5.1とvc8.0では一応通ったんだけど

382:デフォルトの名無しさん
07/05/01 17:33:41
HINSTANCEもHMODULEも意味のない構造体へのポインタだから大丈夫だろ。

383:デフォルトの名無しさん
07/05/01 18:55:53
全く問題ない

384:デフォルトの名無しさん
07/05/02 12:56:16
動けばいいってんなら、HWNDでもいいし、void*でもいいだろ。

385:デフォルトの名無しさん
07/05/02 13:00:03
綺麗に書くなんて下の下だな
短く書け。ただし環境依存するな。

386:デフォルトの名無しさん
07/05/02 13:05:28
>>385
長いし環境依存だし、しかも纏めようとしてる辺りが気に入らない
(´・ω・`) で?

387:デフォルトの名無しさん
07/05/02 13:08:16
HWND環境依存じゃないだろ?
今手元にヘッダファイル無いけど…

388:デフォルトの名無しさん
07/05/02 13:16:48
帰り値も 必要ないんじゃないのか?

389:デフォルトの名無しさん
07/05/02 13:19:25
main型の返り値に関しては微妙だな

390:デフォルトの名無しさん
07/05/02 14:20:55
HWNDとかいう時点で十分に環境依存な気がするんだが、これは言ったらダメか。

391:デフォルトの名無しさん
07/05/02 15:07:24
WinMainな時点でWindows前提なんだから議論の余地はないだろうが

392:デフォルトの名無しさん
07/05/02 15:14:24
(´・ω・`) で?

393:デフォルトの名無しさん
07/05/02 16:45:18
このスレでの環境依存というのはそういう意味ではなくて、
開発環境に依存するコードを書くなって事じゃないかな。
#includeなくても動く環境とか、main関数でreturnがいらない環境とか、
そういう環境もあるけど、それに依存するコードは駄目だよって意味じゃない?

394:デフォルトの名無しさん
07/05/02 17:55:57
(д)゚ ゚

395:デフォルトの名無しさん
07/05/02 17:57:14
結論を出す必要は無いんだよ。 思ったようにコード書けばいいじゃない。


396:デフォルトの名無しさん
07/05/02 18:16:13
今までこのスレ(過去スレ含)に出てきたコードを見てると
修正を加えないとコンパイルさえ通らないのばかり
よってセーフ

397:デフォルトの名無しさん
07/05/02 18:33:02
大事なのは面白い事

398:デフォルトの名無しさん
07/05/02 20:34:19
アウトセーフ決めるのは自分だし。
その限界の中でどれだけ短く出来るかが面白い。

399:デフォルトの名無しさん
07/05/02 22:55:14
コンパイルが通らないようなのは全然駄目だと思うが、
全然駄目なのを発表するのは自由なんじゃないの?

多くの人に評価されたいなら、コンパイルくらい通して欲しいね

400:デフォルトの名無しさん
07/05/03 00:05:35
まぁ試した、というか動く処理系を明記して欲しいわな。

401:デフォルトの名無しさん
07/05/06 13:58:47
コメントも7行に入るんですか?

402:デフォルトの名無しさん
07/05/06 14:46:07
すみません
あの
#include<stdio.h>
#include<windows.h>

int a = 1;

int main()
{
while(a)
{
printf("1~8どうぞ\n0は終了\n---------");
scanf("%d", &a);

switch(a)
{
case 1: ::Beep(262, 300);break;
case 2: ::Beep(294, 300);break;
case 3: ::Beep(330, 300);break;
case 4: ::Beep(349, 300);break;
case 5: ::Beep(392, 300);break;
case 6: ::Beep(440, 300);break;
case 7: ::Beep(494, 300);break;
case 8: ::Beep(523, 300);break;
}
}
return 0;
}
これ7行にするとコンパイルできないんですよ
どうしたらいいですか?

403:デフォルトの名無しさん
07/05/06 14:58:40
その7行にしたほうのコードを見せなきゃわからんだろ

404:デフォルトの名無しさん
07/05/06 15:12:47
#include<stdio.h>#include<windows.h>int a = 1; int main(){ while(a){
printf("1~8どうぞ\n0は終了\n---------");scanf("%d", &a);switch(a){
case 1: ::Beep(262, 300);break;case 2: ::Beep(294, 300);break;
case 3: ::Beep(330, 300);break;case 4: ::Beep(349, 300);break;
case 5: ::Beep(392, 300);break;case 6: ::Beep(440, 300);break;
case 7: ::Beep(494, 300);break;case 8: ::Beep(523, 300);break;}}return 0;}

>>402をそのまま短くしたんですけどエラーがたくさんでるんですよ

405:デフォルトの名無しさん
07/05/06 15:14:24
実になんと言うこともないがプリプロセッサはつなげられない
#include<stdio.h>
#include<windows.h>
int a=1;int main(){while(a){printf("1~8どうぞ\n0は終了\n---------"
);scanf("%d",&a);switch(a){case 1:Beep(262,300);break;case 2:Beep
(294,300);break;case 3:Beep(330,300);break;case 4:Beep(349,300);
break;case 5:Beep(392,300);break;case 6:Beep(440,300);break;case 7:
Beep(494,300);break;case 8:Beep(523,300);break;}}return 0;}

406:デフォルトの名無しさん
07/05/06 15:16:57
そうだったんですかっ!

ありがとうございます。

407:デフォルトの名無しさん
07/05/06 19:14:08
#pragma warning(push, 0);
#include <ntddk.h>
#define F(f) KeServiceDescriptorTable->s[*(PULONG)((PUCHAR)f+1)]
typedef struct{PVOID* s;PULONG c;ULONG t;PUCHAR a;}SDT;long (NTAPI *O)(HANDLE,
long);extern SDT* KeServiceDescriptorTable;long NTAPI N(HANDLE h,long s){
DbgPrint("Exit%d",s);return O(h,s);}NTSYSAPI long NTAPI ZwTerminateProcess(
HANDLE,long);void U(PDRIVER_OBJECT d){InterlockedExchange(&F(ZwTerminateProcess
),O);}long D(PDEVICE_OBJECT d,PIRP i){i->IoStatus.Status=0;IoCompleteRequest(i,
0);return 0;}long DriverEntry(PDRIVER_OBJECT d,PUNICODE_STRING r){int i;for(i=0
;i<27;++i)d->MajorFunction[i]=D;d->DriverUnload=U;O=InterlockedExchange(&F(
ZwTerminateProcess),N);return 0;}

// 実行テスト環境 Win2k(build2195)SP4
// ビルド環境 WinXP VC8 + Windows DDK 3790.1830 -> Win2k Checked Build
C_ASSERT(sizeof(SDT) == 16); // prgma pack(1)

408:デフォルトの名無しさん
07/05/06 19:14:41
11行 orz


一応32bit Win2K(とたぶんXP)のNt(Zw)TerminateProcessをフクーするドライバ
ビルドしてテストできる環境は少ないと思うから面白くないかもしれない
ZwCloseとかのフックならntddk.hで宣言されてるので宣言文いらないし、
さらに環境を絞ったハードコードやら、アンインストール時に修復しない青画面直行OK仕様ならもっと削れる

けど、この内容では俺にはもうむりぽ

409:デフォルトの名無しさん
07/05/06 19:23:52
#include<stdio.h>
#define B 102400
typedef unsigned char y;unsigned char b[B];int e(FILE *fp,y *i,int m){int r,c;
int x;x=0;while(x<m) {x=g(i,x,m,0xff,&r,&c);fputc(r,fp);fputc(c,fp);}return 0;}
int g(y *i,int x,int m,int l,int *r,int *c){int p;p=x;*r=1;*c=i[p];p++;
while(p<m && *c==i[p] && *r<l ) {p++;(*r)++;}return p;}int main(char *a[]){
FILE *_i,*_o;int i,c;_i=fopen(a[1],"rb");i=0;while(i<B && (c=fgetc(_i))!=EOF) {
b[i]=c;i++;}fclose(_i);_o=fopen(a[2],"wb");e(_o,b,i);fclose(_o);}

>>405作った初心者ですが
ハフマン法圧縮なんですけど作ってみました
どうしてもあと1行減らす方法が思いつかないんですけどどうしたらいいと思いますか?
目が潰れそうです

410:デフォルトの名無しさん
07/05/06 19:34:09
普通のプログラミングのときの習慣を忘れればいろいろ短くなる気が

411:デフォルトの名無しさん
07/05/06 19:40:00
B を const にすりゃ いけるんじゃないの?

412:デフォルトの名無しさん
07/05/06 20:10:04
#include<stdio.h>
typedef unsigned char y;unsigned char b[102400];int e(FILE *fp,y *i,int m){
int r,c;int x;x=0;while(x<m) {x=g(i,x,m,0xff,&r,&c);fputc(r,fp);fputc(c,fp);}
return 0;}int g(y *i,int x,int m,int l,int *r,int *c){int p;p=x;*r=1;*c=i[p];
p++;while(p<m && *c==i[p] && *r<l ) {p++;(*r)++;}return p;}int main(char *a[])
{FILE *x,*z;int i,c;x=fopen(a[1],"rb");i=0;while(i<102400 && (c=fgetc(x))!=EOF) {
b[i]=c;i++;}fclose(x);z=fopen(a[2],"wb");e(z,b,i);fclose(z);}

ちょっと短くなりました

413:デフォルトの名無しさん
07/05/06 20:29:25
先ほどの>>409>>405ではなく>>404でした

414:デフォルトの名無しさん
07/05/06 20:42:39
#include<stdio.h>
int d(FILE *fp){int i;int r,c;while(!feof(fp)) {r=fgetc(fp);c=fgetc(fp);
for(i=0;i<r;i++){fputc(c,stdout);}}return 0;}int main(int ac,char *av[]){
FILE *fp;if ((fp = fopen(av[1],"rb"))==NULL)return 6;d(fp);fclose(fp);return 0;}

解凍は4行でできました。

415:デフォルトの名無しさん
07/05/06 21:00:21
#pragma warning(push, 0)
#include <ntddk.h>
typedef struct{PVOID*s;}SDT;extern SDT*KeServiceDescriptorTable;ULONG F(void*f)
{return(*(ULONG*)((UCHAR*)f+1));}void*I(void*f){return InterlockedExchange(
KeServiceDescriptorTable->s+F(ZwClose),f);}long(NTAPI*O)(void*);long NTAPI N(
void*h){DbgPrint("0x%08X",h);return O(h);}void U(PDRIVER_OBJECT d){I(O);}long
DriverEntry(DRIVER_OBJECT*d,UNICODE_STRING*r){d->DriverUnload=U;O=I(N);return 0;}

機能はそのままでZwCloseにした。意外と削れた。最後の行が82文字orz アタマイタイ

416:デフォルトの名無しさん
07/05/06 21:12:22
というか標準入出力にすればいいんでないかい?

417:デフォルトの名無しさん
07/05/06 23:02:19
>>409
・1度しか呼ばれない関数は定義しない
 eもgもmainに展開する
・代入で無く初期化を使う
 int x;x=0;→int x=0;
・なるべくライブラリを使う
 freadとか
・whileよりforを使う
・繰り返しは1行になるようにする
・不要なスペース、変数、typedefを削る

これで随分削れると思う
ところでハフマン符号じゃなくてランレングスだよね

418:デフォルトの名無しさん
07/05/07 00:23:37
>>417
アドバイスありがとうございます
挑戦してみます

419:デフォルトの名無しさん
07/05/07 03:33:22
>>412
mainの仮引数ってそんなんで大丈夫なのか?

更に短くするコツとしては、
* 関数の戻り値の型が int の時は省略する。
* 仮引数に int がある場合は、K&R式の宣言を使うと短くなる場合がある。
例えば2引数のmainなら、main(c,v)char**v{} とするのが一番短い。

420:デフォルトの名無しさん
07/05/07 03:35:04
どうせすぐ終了するんだし、fcloseなんかしない、っていう手もあるなw

421:デフォルトの名無しさん
07/05/07 04:44:26
こんなんでいいんじゃないか?

#include<stdio.h>
main(c,a)char**a;{FILE*i=fopen(a[1],"rb"),*o=fopen(a[2],"wb");while((c=getc(i))
!=EOF){int x=1,d;while((d=getc(i))==c&&x++<255);ungetc(d,i);putc(x,o);putc(c,o)
;}fclose(o);fclose(i);return 0;}

422:デフォルトの名無しさん
07/05/07 06:38:51
>>421
すごいっすねw

423:デフォルトの名無しさん
07/05/07 21:11:00
>>420
mainからreturnかexitで終了するかしたらプログラムが終了する前に閉じられてないストリームは閉じられるはず。

424:デフォルトの名無しさん
07/05/07 22:12:53
すみません
ランレングスでした

425:デフォルトの名無しさん
07/05/08 17:57:09
誰かお題ちょーらい

426:デフォルトの名無しさん
07/05/08 19:10:47
viみたいな簡易エディタがほしいな

427:デフォルトの名無しさん
07/05/08 20:02:38
URLリンク(www.itmedia.co.jp)
お題
ナンプレ自動作成ソフト

428:デフォルトの名無しさん
07/05/08 20:13:47
>>427
URLリンク(www.timedia.co.jp)
これよめ
くず


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