七行プログラミング part5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/03/16(木) 09:02:39過去作品は、もしかしたら>>2-20あたりに。
前スレ
http://pc8.2ch.net/test/read.cgi/tech/1051703369/
part 3
http://pc2.2ch.net/tech/kako/1033/10331/1033143528.html
part 2
http://pc3.2ch.net/tech/kako/1018/10188/1018840143.html
part 1
http://pc.2ch.net/tech/kako/984/984182993.html
0446デフォルトの名無しさん
2007/07/04(水) 02:18:22少しでも役に立つものがあれば…と思ったのですが、
7行の題材としてはあまり面白くなかったですかね。
頑張れば5行くらいで書けるでしょうし。
いい題材が浮かびません…。
0447デフォルトの名無しさん
2007/07/04(水) 03:47:17コメントのネストは伝統的にないことになってるはず。
>>446
5行で書く方法を思いつかない…orz
こんなコメントとか
/* printf("*/ \"\\"); */
Shift JISの2バイト目をきちんと処理できるように書くには7行じゃ足りない気がするんだけど…。
0448デフォルトの名無しさん
2007/07/04(水) 23:04:50ヒント:7行でありさえすればいい
0449デフォルトの名無しさん
2007/07/05(木) 00:09:34>/* printf("*/ \"\\"); */
これは、コメント削除処理した結果が
\"\\"); */
になればいいんですよね?
Shift JISの2バイト目をきちんと処理できるかどうかを検証する文字列って
どんなのなのでしょうか?
0450デフォルトの名無しさん
2007/07/05(木) 08:38:24> Shift JISの2バイト目をきちんと処理できるかどうかを検証する文字列って
ソ/* */
とか?
0451デフォルトの名無しさん
2007/07/05(木) 08:43:43printf("ソ");/* */
0452デフォルトの名無しさん
2007/07/05(木) 10:04:12#include <stdio.h>
int main(int, char *[]) {
printf("表");/* ");/* */
return 0;
}
というか、別に入力文字コードはUTF-8限定でもいいと思うんだけど。
0453デフォルトの名無しさん
2007/07/05(木) 11:18:180454デフォルトの名無しさん
2007/07/05(木) 17:15:43m = n//**/o
+ p;
m = n + p;
0455デフォルトの名無しさん
2007/07/05(木) 17:34:54ダウト。\/ というシーケンスは規格では定義されていない。
0456デフォルトの名無しさん
2007/07/05(木) 18:49:590457デフォルトの名無しさん
2007/07/06(金) 00:18:02#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"));}
0458デフォルトの名無しさん
2007/07/06(金) 00:59:33main(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をインライン展開してみた。
0459デフォルトの名無しさん
2007/07/06(金) 01:01:58EUCと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;}
0460デフォルトの名無しさん
2007/07/06(金) 01:16:35乙w
0461デフォルトの名無しさん
2007/07/06(金) 01:17:210462デフォルトの名無しさん
2007/07/06(金) 01:48:49最初からワイド文字では駄目ですか?
0463デフォルトの名無しさん
2007/07/06(金) 02:00:330464デフォルトの名無しさん
2007/07/06(金) 02:18:040465デフォルトの名無しさん
2007/07/06(金) 09:42:29unsigned int a を左右反転させて b にっ ka
0466デフォルトの名無しさん
2007/07/06(金) 10:57:35関数だけどやってみた。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;}
0467466
2007/07/06(金) 11:01:36for(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`)
0468466
2007/07/06(金) 11:08:31何でわざわざ同じ変数内で入れ換えてるんだ俺…
0469デフォルトの名無しさん
2007/07/06(金) 13:08:37);return b;}
もう少し短くなりそうだが
0470デフォルトの名無しさん
2007/07/06(金) 13:14:15eturn b;}
とりあえずここまで。
0471デフォルトの名無しさん
2007/07/06(金) 13:18:28スレがあるのw
0472デフォルトの名無しさん
2007/07/06(金) 13:20:420473デフォルトの名無しさん
2007/07/06(金) 13:21:26すまね
誤爆したw
レス
0474デフォルトの名無しさん
2007/07/06(金) 13:28:51( ゚д゚) 「誤爆」
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
0475デフォルトの名無しさん
2007/07/06(金) 13:30:18七行でよろw
0476465
2007/07/06(金) 13:34:46typedef unsigned U;U R(U a){U b=0,i=1;for(;i;i*=2)b=b*2+!!(a&i);return b;}
iが邪魔だね・・・消せないかなぁ
0477デフォルトの名無しさん
2007/07/06(金) 13:39:01int 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;}
0478デフォルトの名無しさん
2007/07/06(金) 13:43:04printf(" ( ゚д゚) 「誤爆」\n_(__つ/ ̄ ̄ ̄/_ \n \/ /\n  ̄ ̄ ̄
( ゚д゚ )\n_(__つ/ ̄ ̄ ̄/_ \n \/ /\n  ̄ ̄ ̄\n ( ゚д゚)\n_(__つ/ ̄ ̄ ̄/_
\/ /\n ( ゚д゚ )\n_(__つ/ ̄ ̄ ̄/_ \n \/ /");
0479デフォルトの名無しさん
2007/07/07(土) 01:29:49typedef unsigned u;u r(u n){u i=~0,a=0;for(;i;i/=2,a=n%2+a*2,n/=2);return a;}
一行切った。
0480デフォルトの名無しさん
2007/07/07(土) 01:31:440481デフォルトの名無しさん
2007/07/07(土) 01:34:250482デフォルトの名無しさん
2007/07/07(土) 02:17:28typedef unsigned u;u r(u n){return u?(n&1?~0-~0/2:0)+r(n/2)/2:0;}
65字
0483476
2007/07/07(土) 02:26:17ありがとう。これでもうまくいったみたい。
R(int a){int b=0,i=1;for(;i;i*=2)b=b*2+!!(a&i);return b;}
アルゴリズムに致命的な問題がある気がする
0484デフォルトの名無しさん
2007/07/07(土) 03:25:52R(a){int b=0,i=1;while(b+=b+!!(a&i),i*=2);return b;}
どっちも52文字
でも for文の方が わかりやすさを維持しててイイカナ
0485デフォルトの名無しさん
2007/07/07(土) 03:44:190486デフォルトの名無しさん
2007/07/07(土) 03:45:040487デフォルトの名無しさん
2007/07/07(土) 03:52:44#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);}}
0489デフォルトの名無しさん
2007/07/07(土) 04:57:530490デフォルトの名無しさん
2007/07/07(土) 05:01:1832だね
0491デフォルトの名無しさん
2007/07/07(土) 05:08:40どうしても思いつかなかった
0492デフォルトの名無しさん
2007/07/07(土) 05:24:11これで30
r(n){return n?r(n*2)*2|n<0:0;}
0493デフォルトの名無しさん
2007/07/09(月) 12:47:17最短解っぽいのが出たら急に失速するんだなw
0494デフォルトの名無しさん
2007/07/09(月) 16:21:290495デフォルトの名無しさん
2007/07/09(月) 23:34:470496デフォルトの名無しさん
2007/07/10(火) 00:36:20なんかそれだと上手くいったりするんでしょうね。
でも僕はやっぱりワイド文字の扱いが良く分かっていないので、
もしよければワイド文字処理版を作ってみてくださいな。
0497デフォルトの名無しさん
2007/07/10(火) 02:01:230498デフォルトの名無しさん
2007/07/10(火) 17:42:56m=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]);}}
画像ぼかし。
これならマスク使える…?
0499498
2007/07/10(火) 19:23:38=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
0500デフォルトの名無しさん
2007/07/11(水) 00:07:150501デフォルトの名無しさん
2007/07/11(水) 08:57:140502デフォルトの名無しさん
2007/07/12(木) 02:21:33動作確認テストをやっている最中に虚しくなってやめた。
ゲームって難しいなぁ。
0503デフォルトの名無しさん
2007/07/13(金) 00:56:21part4って297レスしかつかなかったの?
0504デフォルトの名無しさん
2007/07/13(金) 00:58:330505デフォルトの名無しさん
2007/07/15(日) 13:11:080506デフォルトの名無しさん
2007/07/15(日) 19:06:020507デフォルトの名無しさん
2007/07/15(日) 22:41:3905086
2007/07/16(月) 01:29:02俺工房だから間違えてるのかもしれない
0509デフォルトの名無しさん
2007/07/16(月) 01:58:27double 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;}
ニュートン法を使ったあれです。
いじくってやってください。
0510デフォルトの名無しさん
2007/07/16(月) 21:05:292.初期化と代入は一緒に
3.+=1は++に
でだいぶ短くなる予感。
ニュートン法とやらがあってるんかは知らんけどw
0511デフォルトの名無しさん
2007/07/16(月) 21:27:20x=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;}
0512デフォルトの名無しさん
2007/07/16(月) 23:12:42f("%lf",&c);x*x<c;)++x;for(;n--;x/=2)x+=c/x;return!printf("√は%fです。\n",x);}
0513デフォルトの名無しさん
2007/07/22(日) 20:17:55..>...<<+++.---.> >..<....>...<..................>..<.............>...<.................>..<<+++.---.>
>.......<...>..<..>..<..>.....<..................>..<............>.....<..>..<..>..<<+++.---.> >..<..
..>..<..>....<...>..<...>..<...>..<.>..<.>....<..>......<.>..<...>..<.>..<...>..<.>..<.>..<<++
+.---.> >..<.....>..<.>..<......>......<...>..<.>...<...>..<...>..<...>..<...>..<.>..<......>...<<
+++.---.> >..<....>...<.>..<.....>..<...>..<...>..<.>..<....>..<...>..<...>..<...>..<.>..<...>..
<.>..<.>..<<+++.---.> >........<..>..<......>....<.>...<.>..<.>..<....>..<...>..<....>.....<...>.....<..>..<...>..
0514デフォルトの名無しさん
2007/07/30(月) 13:01:28なんのプログラム?
0515デフォルトの名無しさん
2007/07/30(月) 13:02:570516デフォルトの名無しさん
2007/07/30(月) 13:03:45言語は何なのかおせーて
0517デフォルトの名無しさん
2007/07/30(月) 13:04:230518デフォルトの名無しさん
2007/07/30(月) 13:08:58+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.
------------.<++++++++.--------.+++.------.--------.>+.
0519デフォルトの名無しさん
2007/07/30(月) 21:50:24やってまいりました。
ヘボン式訓令式どちらもサポートすると
おそらく300バイト程度の関数になるでしょうか?
●ローマ字半角カナ変換(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で戻る。
誰か短くしてくれ
0521デフォルトの名無しさん
2007/07/30(月) 22:48:230523デフォルトの名無しさん
2007/07/31(火) 00:25:270524デフォルトの名無しさん
2007/07/31(火) 03:37:18スレに貼れないし。鬱だ氏のうorz
0525デフォルトの名無しさん
2007/07/31(火) 08:02:16それって擬似コード?それともなでしこ?
正攻法がどんなんかわからん・・・この方法じゃこれ以上削れそうにないし・・・
0527デフォルトの名無しさん
2007/07/31(火) 14:57:44トェェイがうまく変換できません・・・
0528デフォルトの名無しさん
2007/07/31(火) 15:01:03//キョウハスウネンブリニダイガクニイッテコヨウトオモイマストェェイアーッ
●ローマ字半角カナ変換(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 . .:: :.: :::
 ̄ ̄ ̄(_,ノ  ̄ ̄ヽ、_ノ ̄
0530デフォルトの名無しさん
2007/07/31(火) 17:02:01ちょw
スレタイを7回音読しろよw
0532デフォルトの名無しさん
2007/07/31(火) 19:11:57クァ/qwa
0533524
2007/07/31(火) 20:50:37"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で出る字は大体出ると思うけど。
まだ冗長だなあ。
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を参考にして苦しいがスレタイ通りに・・・(゚Д゚;)
0535デフォルトの名無しさん
2007/07/31(火) 21:54:140537デフォルトの名無しさん
2007/07/31(火) 22:19:30ソースコードのハッシュを算出する
ハッシュを元にソースコードをDLしてくる
→事実上ソースコードはハッシュ文字数に圧縮される ∩( ・ω・)∩ ばんざーい
0539デフォルトの名無しさん
2007/07/31(火) 22:36:237行79桁でファイル共有ソフトを書けと。
●ローマ字半角カナ変換(Sの|Sを)
経過ダイアログはオフ。
A=((「http://isoroku.net/A.txt」をHTTPデータ取得)の改行を空に置換)を"|"で区切る。
B=((「http://isoroku.net/B.txt」をHTTPデータ取得)の改行を空に置換)を"|"で区切る。
Aで反復、S=Sの対象をB[回数-1]に置換。
Sで戻る。
//∩( ・ω・)∩ ばんざーい
//orz
0541デフォルトの名無しさん
2007/08/01(水) 03:10:59疑似コードにしか見えんw
0542デフォルトの名無しさん
2007/08/01(水) 08:49:440543デフォルトの名無しさん
2007/08/01(水) 15:08:000544デフォルトの名無しさん
2007/08/01(水) 15:26:470545デフォルトの名無しさん
2007/09/03(月) 14:33:17■ このスレッドは過去ログ倉庫に格納されています