[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 16:01 / Filesize : 349 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

七行プログラミング part2



1 名前:デフォルトの名無しさん [02/04/15 12:09]
7行×79文字なら言語は問いません。
過去作品は>>2-5を参照。

■前スレ
pc.2ch.net/test/read.cgi/tech/984182993/

196 名前:デフォルトの名無しさん mailto:sage [02/04/25 01:18]
>193の出力を79行にしてみた

import java.awt.image.*;import java.awt.*;public class A{public static void
main(String[]S)throws Exception{Image c=new javax.swing.ImageIcon(S[0]).
getImage();int w=79,h=c.getHeight(null)*w/c.getWidth(null);BufferedImage s=new
BufferedImage(w,h,10);Graphics g=s.getGraphics();g.drawImage(c,0,0,w,h,null);g.
dispose();DataBuffer p=s.getData().getDataBuffer();char[]b=new char[w];for(int
y=0;y<h;y++){for(int x=0;x<w;x++)b[x]=" `.-:i+*3X8&%$W#@".charAt(p.getElem(x+y
*w)/16);System.out.println(b);}System.out.flush();}}

もうちょっと縮むかも。
System.out.flush()は要らないかも。
コンソールの文字の縦横比を考慮した方がいいのかも。かも。

197 名前:S ◆Q14CxNhI [02/04/25 01:48]
意外とさくさく進みます。後40字。

<body onKeyDown=K=event.keyCode><script>X=[B=[Z=[A=12]]];function Y(){c=0;C=[d=
K-37?1:-1];for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[(C[i]=p*A-Math.round(p/A)*145)
+h])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1;if(e
=!e){if(f|a){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t%7]-
4,a=0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;)Z[
j]=Z[j-A]}h+=A}for(i=S="";i<240;S+=X[i]?"■":"_",X[i]=Z[i++])S+=i%A?"":"<br>";
document.body.innerHTML=S+P;Z[5]?0:setTimeout(Y,99-P)}for(e=K=t=P=i=0;i<264;Z[i
]=++i%A<2||i>228?1:0)a=h=17;Y()</script>

198 名前:デフォルトの名無しさん mailto:sage [02/04/25 01:51]
>>197
目立ちたいのはわかるが、作業中なのにぽこぽこageんでください。
ageられてるから見てみると、作業途中のテトリスばかりでうざいです。

199 名前:デフォルトの名無しさん mailto:sage [02/04/25 02:00]
>>198 むしろどんどんアゲ欲しいのだが。
テトリス(以外も含めて)の縮め過程を見るのが最近ここのスレでの楽しみ。
それとも >>198 よ。作業用スレ立てるか?その方がうざい。

200 名前:perl16 mailto:sage [02/04/25 02:04]
>>198
まぁまぁマターリしようよ。

201 名前:デフォルトの名無しさん mailto:sage [02/04/25 02:08]
>>199
はぁ?
何で作業スレ立てるって話になるんだよ
別に作業課程を書き込むのは悪くないけど、いちいちageるなってことだ。
大幅に構造を変更したとかならともかく、ちまちま削るたびにageられても迷惑だ。

だいたい、ageられなきゃレスを確認できない>>199の環境に問題がある。

202 名前:デフォルトの名無しさん mailto:sage [02/04/25 04:02]
>193氏のアスキーアートをさらに縮めて4行に。

class A{static{new javax.swing.ImageIcon(System.getProperty("i")){int i,w=80,h
=w*getIconHeight()/getIconWidth();{new java.awt.image.BufferedImage(w,h,10){{
for(getGraphics().drawImage(getImage(),0,0,w,h,null);++i<w*h;)System.out.print
(" `.-:i+*3X8&%$W#@".charAt(getData().getDataBuffer().getElem(i)>>4));}};}};}}

コンソールの横幅を80桁にして
java -Di=C:\graphic\hoge.jpg A
みたいな感じで実行。例外吐いて終了。

なんというか、これぞ糞コードの極み。みたいな。

203 名前:デフォルトの名無しさん mailto:sage [02/04/25 07:06]
テトリスうざいのは同感だが、
作った物を見てくれ……というS氏の気持ちもわからんではない。

204 名前:デフォルトの名無しさん mailto:sage [02/04/25 17:11]
extern int putchar(int);char*P="31287f861fa1fa187e7a182085efa186187efe0fa083ff\
e0fa08207a182785e861fe186110410410404104185e862f248a182082083f873b61861871a658\
e17a186185efa187e8207a186589dfa187e8a17a078185e7c410410486186185e86186148c8618\
6dce185230c4a144a104104fc210843f";B(int i,int c){long long int j,x;for(x=j=0;j<
9;j++)x=(x<<4)+(*(P+i*9+j)-(*(P+i*9+j)>60?87:48));for(j=0;j<6;j++)putchar(((x>>
c*6)&63)>>(5-j)&1?35:32);putchar(32);}main(int c,char*v[]){char*l,j;if(c>1)for(
j=5;j>=0;j--){for(l=v[1];*l!=0;l++)B(*l-65,j);putchar(10);}}

banner
大文字アルファベットのみ。long long int を __int64 にすればVCでも動くと思う。
上のAA生成に比べると見劣りするナァ(;´Д`)



205 名前:デフォルトの名無しさん mailto:sage [02/04/25 17:31]
>199はageとアップを混同してると思われ。
プログラミング過程はどんどんカキコしていいけど、
完成品じゃないならメール欄にsageと書くべし。

206 名前:193 mailto:sage [02/04/25 21:21]
>>187
new Thread(new Runnable(){ ...
の new Runnable っていらんのじゃないの?
なくなってもいいから,もっと縮むかも.

>>202
縮むもんだねぇ.
ちゃんとインデントして見たソース.
私には書けない...
喜んでいいのやら哀しんでいいのやら...

207 名前:perl16 mailto:sage [02/04/26 00:56]
ピンポンには正直驚いた。
僕はJAVAプログラミングできませんが、
ピンポンを発展させて7行でブロック崩しができたらすごいと思う。
Perlでなんかいいネタないかなー。

208 名前:187 mailto:sage [02/04/26 09:21]
>>206縮めてみた

import java.net.*;import java.io.*;class P{static void main(String a[])throws
Exception{ServerSocket s=new ServerSocket(a.length>2?Integer.parseInt(a[2]):8080
);for(;;){Socket n=s.accept(),o=new Socket(a[0],Integer.parseInt(a[1]));new P(o.
getInputStream(),n.getOutputStream());new P(n.getInputStream(),o.getOutputStream
());}}P(final InputStream i,final OutputStream o){new Thread(){public void run()
{try{for(int d;(d=i.read())!=-1;)o.write(d);i.close();o.close();}catch(Exception
e){}}}.start();}}

こんなもんか

209 名前:S ◆Q14CxNhI mailto:sage [02/04/26 22:19]
>>198 >> 203
うざっこく思われているということに全く気付いていませんでした。
申し訳ありません。
今後は気をつけて参加したいと思います。

210 名前:デフォルトの名無しさん mailto:sage [02/04/26 22:36]
>>209
ガンバレSさん。sageだけど応援してるよ
いつかロシア人もビックリの7行テトリスを夢見て

211 名前:デフォルトの名無しさん mailto:sage [02/04/26 23:38]
こういった心遣いによってこのスレは成り立ってるんだね。
誰もレスしてないのに何度もアップしたのは確かにS氏のチョンボだけど、
テトリス自体は応援してるので、是非いつか遊びやすくて7行のテトリスを
ずずんとアップしてください

212 名前:S ◆Q14CxNhI [02/04/27 01:20]
ついにやりました! テトリス7行達成です!!
叱咤激励いろいろいただきました、みなさんのレスに感謝いたします。

遊び方:カーソル左右で移動、リターンキーで回転
プレイ環境:おそらく IE 5.01 以上?

<body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y()
{C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/
A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1
if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t
%7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;)
Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X
[i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>

...これは age て良かったですよね?

213 名前:デフォルトの名無しさん mailto:sage [02/04/27 01:24]
>212
下キー押すと右に行くのは仕様ですか?

214 名前:デフォルトの名無しさん mailto:sage [02/04/27 01:28]
ちなみに1行79文字がこのスレの標準ルールです。



215 名前:S ◆Q14CxNhI mailto:sage [02/04/27 01:30]
>>213
残念ながらそうなります。縮めるだけで精一杯なもので・・・
カーソル左右とリターンキー以外のキーを押すと、トンでもないことになります。

216 名前:デフォルトの名無しさん mailto:sage [02/04/27 06:58]
>>212
おめでとう
綺麗にまとまったもんだねー、すごい。
これならageても文句はなかろう。

217 名前:デフォルトの名無しさん mailto:sage [02/04/27 08:23]
やっとテトリス終わりですか。嬉しい。

218 名前:デフォルトの名無しさん mailto:sage [02/04/27 10:13]
S、嫌われたね。自己厨の典型的な末路だな

219 名前:デフォルトの名無しさん mailto:sage [02/04/27 13:28]
>>218
はあ?うざいのは確かだったが、誰も嫌ってなどはいない
少なくともテトリスは賞賛に値する(紙かどうかは別として)
今後は正しく sage てね、で終わりでいいじゃないか
本人も反省しているよう出し

220 名前:デフォルトの名無しさん mailto:sage [02/04/27 14:04]
>>218、嫌われたね。自己厨の典型的な末路だな

221 名前:デフォルトの名無しさん mailto:sage [02/04/27 14:09]
>>S
感動すますた

222 名前:デフォルトの名無しさん mailto:sage [02/04/27 23:04]
荒れるのはやだねぇ。新しい作品期待。

ここで自分で「これみろや!」って出せないのが鬱

223 名前:デフォルトの名無しさん mailto:sage [02/04/28 01:01]
テトリスは俺の中で神。というわけで解説キボンヌ

224 名前:デフォルトの名無しさん mailto:sage [02/04/28 01:09]
簡単な障害物よけゲームをJAVAアプレットで作ってみました。
 
import java.awt.*;public class H extends java.applet.Applet{int p,c,m,b,t=300,
s[]=new int[18];{new Thread(){public void run(){for(;s[p+15]<1&b<1;){repaint()
;try{sleep(t--);}catch(Exception e){}for(c=17;c>=0;c--)s[c]=c>2?s[c-3]:m>2?0:m
==c?0:1;m=m>2?(int)(Math.random()*3):3;}}}.start();}public void paint(Graphics
g){for(c=0;c<18;c++)g.drawString(s[c]>0?"■":c==p+15?"△":"□",c%3*10,c/3*10);
}public boolean keyDown(Event e,int k){if(k==1006&p>0)p--;if(k==1007&p<2)p++;b
=s[p+15];repaint();return 1>0;}}
 
アプレットなので、以下のHTMLを使ってください。

<HTML>
<BODY>
<CENTER>
<APPLET code="H.class" width="30" height="50"></APPLET>
</CENTER>
</BODY>
</HTML>
 
矢印キーで左右に移動します、だんだんスピードが上がっていきます。



225 名前:デフォルトの名無しさん mailto:sage [02/04/28 01:20]
>>223
テトリスの解説は >>117 にすでにあります

226 名前:223 mailto:sage [02/04/28 01:32]
>225 それは知っていたんだけど、完成型は随分違うから全然わかんない
もしかして俺はバカ? 無限にウィンドウを開くJS作ってOSごとしんできます

227 名前:デフォルトの名無しさん mailto:sage [02/04/28 10:32]
        game.2ch.net/test/read.cgi/gamedev/1005038280/
        「ソースを上げるスレッド」 @ゲ制技板
114前後しか今のところ言ってないみたいだし、
あまり変化がないならここに張ったらどうよ?

228 名前:デフォルトの名無しさん [02/04/28 13:43]
7文字プログラミングは?

229 名前:デフォルトの名無しさん mailto:sage [02/04/28 13:46]
#includ

cは早くも脱落

230 名前:デフォルトの名無しさん [02/04/28 13:51]
void mai

231 名前:デフォルトの名無しさん mailto:sage [02/04/28 14:18]
main(){

232 名前:デフォルトの名無しさん mailto:sage [02/04/28 16:47]
10 CLS

233 名前:デフォルトの名無しさん mailto:sage [02/04/28 17:02]
1CLS:FOR

234 名前:デフォルトの名無しさん mailto:sage [02/04/28 19:45]
N88BASICで、リストと実行結果が全く同じプログラム
10 list

ネタはこの程度にしておこう。
誰か作品出してくれっ



235 名前:デフォルトの名無しさん mailto:sage [02/04/28 20:18]
トリッキーの1降臨キボン

236 名前:VB厨 mailto:sage [02/04/29 22:52]
Sub Main


237 名前:デフォルトの名無しさん [02/04/29 22:52]
旧スレが上がってるのでage

238 名前:デフォルトの名無しさん mailto:sage [02/04/30 13:43]
del %0
バッチはダメ?

239 名前:ロボ鉄 ◆MGTy6iYI mailto:sage [02/04/30 21:27]
おぉ、僕の冗談で作った2行カウンタが晒されてる・・・
ただのカウンタをちょっと縮めただけなのに。
恥ずかしいからsage。
誰も見ないでくれ

240 名前:デフォルトの名無しさん mailto:sage [02/04/30 22:07]
正直、7行で作ってくれ

241 名前:ロボ鉄 ◆MGTy6iYI mailto:sage [02/04/30 22:17]
カウンタに七行も無いでしょうが

242 名前:デフォルトの名無しさん mailto:sage [02/05/01 00:20]
じゃ、スレ違い

243 名前:デフォルトの名無しさん mailto:sage [02/05/01 08:25]
>>239
逝け

244 名前:デフォルトの名無しさん mailto:sage [02/05/01 11:32]
ついにロボ鉄が来たか…
このスレももう終わりだな。

良スレから駄スレへ

悲しいけど

     ∧∧  ミ _ ドスッ
     (   ,,)┌─┴┴─┐
    /'   つ 糸冬 了 │
  〜′ /´ └─┬┬─┘
   ∪ ∪      ││ _ε3
               ゛゛'゛'゛



245 名前:デフォルトの名無しさん [02/05/01 20:39]
ネタ募集



246 名前:                [02/05/01 21:06]
    遺伝子的循環





247 名前:デフォルトの名無しさん mailto:sage [02/05/02 00:54]
前スレが激良スレだったからこそなんだろうか…

248 名前:デフォルトの名無しさん mailto:sage [02/05/02 01:12]
ネタを与えれば活発に動き出すと思われます

249 名前:デフォルトの名無しさん mailto:sage [02/05/02 10:42]
テトリス見てる限りそれも怪しいぞ…

250 名前:デフォルトの名無しさん mailto:sage [02/05/03 23:42]
そういえば、cって戻り値だけじゃなくて、引数がintの時に

func(a, b)
{ return a + b; }

こうやって省略できるんだね。
これも多少は縮めるのに役立つんじゃないかな。

251 名前:デフォルトの名無しさん mailto:sage [02/05/03 23:43]
前スレのSHA-1縮めていて思いついたけど、
やっぱり11行より短くなりそうもなかったので破棄したけど。

252 名前:デフォルトの名無しさん mailto:sage [02/05/04 01:04]
>>250
みんな普通にやってるみたいだけど?オセロ参照

253 名前:デフォルトの名無しさん mailto:sage [02/05/04 16:48]
>>252
引数まで省略してるのは見つからないけど。
記事番号キボンヌ

254 名前:デフォルトの名無しさん mailto:sage [02/05/06 03:27]
>>253
引数省略はC++で許されたっけ?
gccではエラー出てたような?うろ覚えスマソ



255 名前:デフォルトの名無しさん mailto:sage [02/05/06 11:07]
縮めるためならK&R

256 名前:デフォルトの名無しさん [02/05/06 13:15]
誰かが「すでに動いてるソースコードで」ネタを提供しなきゃ駄目なんだよ


257 名前:デフォルトの名無しさん mailto:sage [02/05/06 13:44]
テトリスやオセロもそうだったけど、比較的上級者?が最初にネタを提供しても、
始めから縮めテクが使われているし、そのまま自分で解決してしまうからねぇ・・・
# それはそれで、見ていて楽しかったけれど。
あまり縮めるのが得意でない人が、10数行でネタを投稿するのが良いかも。
# スネークとかライフゲームとか

258 名前:デフォルトの名無しさん mailto:sage [02/05/06 16:07]
>>257
初心者の出すネタは上級者には面白くないという罠。
上級者が考えると、ホントに出来るかどうか微妙だから面白い。
テトリスはそういう意味では、ネタとしては、ナイスだったね。

259 名前:デフォルトの名無しさん mailto:sage [02/05/06 18:32]
色当てゲームはどうかな。

260 名前:デフォルトの名無しさん mailto:sage [02/05/06 18:38]
P2Pチャットシステムとかどうよ?


261 名前:デフォルトの名無しさん mailto:sage [02/05/06 18:39]
7行でメールソフト作ってください。
コマンドラインから
 *** <smtpサーバ> <port> <送信先アドレス> <subject> <内容> <添付ファイル>
みたいな感じで送れるやつ。

262 名前:デフォルトの名無しさん mailto:sage [02/05/06 18:44]
添付ファイルは無理だろ
Base64 encodingだけで2~3行食いそう

263 名前:デフォルトの名無しさん mailto:sage [02/05/06 20:16]
2 rem 言語:Basic
4 rem 使用方法:使えません(w
10  print "ここは七行でプログラムを作る・鑑賞するスレです。"
20  print "マターリが原則です。"
30  print "ネタ提供時/七行達成時いがいはsage推奨"
40  print:print "ソースUP時は、必ず"
50  pirnt "言語"
60  print "使用方法"
70  print "何を作ったのか"
80  print"などを書きましょう。"
90   goto 20

264 名前:デフォルトの名無しさん mailto:sage [02/05/06 22:25]
>>258
テトリスは絶対不可能だと思ってたからね。驚いたよ
オセロやテトリス、倉庫番など、
元があるゲーム類ってのはネタとして興味が大きそうだね



265 名前:デフォルトの名無しさん mailto:sage [02/05/07 06:14]
ファイラーなんてどうでしょ?
削除とかしか出来ない超低機能な奴。

266 名前:デフォルトの名無しさん mailto:sage [02/05/07 15:52]
>>265
昔 MSX で作ったことがあるよ。BASIC 15行くらいで、名前変更と削除のみができるの。
超低機能ならば、できるでしょうね。
あとは、7行でどれだけの機能を詰め込めるか・・・

267 名前:デフォルトの名無しさん mailto:sage [02/05/07 18:03]
ゴールが見えない時点で曖昧だなぁ

268 名前:デフォルトの名無しさん mailto:sage [02/05/07 22:08]
じゃぁ,コラムスとか。

269 名前:デフォルトの名無しさん mailto:sage [02/05/07 22:27]
お絵かきロジック、できるかもだ。

270 名前:デフォルトの名無しさん mailto:sage [02/05/08 00:47]
箱入り娘はどうよ?

  0.1.2.3
  -----
a| BAAC  G,1-e って入力すると、Gが(1,e)に移動。
b| BAAC  で、Aを (1,d)-(2,e) に持ってこれればクリア。
c| DF.FE  でもこれだとわかりづらいから、別の表示方法キボンヌ。
d| DGHE  (記号とかもありかも)
e| .I   .J  たしか、最短の手が81手だったかな。

271 名前:デフォルトの名無しさん [02/05/08 01:10]
キタ━━━( ゚∀゚ )━( ゚∀)━(  ゚)━(  )━(゚  )━(∀゚ )━( ゚∀゚ )━━━!!!!

272 名前:age [02/05/11 17:10]


273 名前:デフォルトの名無しさん [02/05/11 23:23]
メーラー 11行。

#include <stdio.h>
#include <winsock.h>
#define k send(s,t,l,0);Sleep(999);while(z=recv(s,t,99,0)){t[z]=0;printf("%s",t);}
#define sp sprintf
main(int c,char **a){SOCKADDR_IN d;WSADATA w;char t[99],z,l;SOCKET s;
WSAStartup(MAKEWORD(2,2),&w);s=socket(AF_INET,SOCK_STREAM,0);if(c!=2)return;
d.sin_family=AF_INET;d.sin_port=htons(25);d.sin_addr.s_addr=inet_addr(a[1]);
if(!connect(s,(PSOCKADDR)&d,sizeof(d)))
{l=sp(t,"HELO %s\r\n",a[2]);k;l=sp(t,"MAIL FROM:%s\r\n",a[3]);k;
l=sp(t,"RCPT TO:%s\r\n",a[4]);k;l=sp(t,"DATA\r\n",a[4]);k;
l=sp(t,"Subject: %s\r\n",a[5]);k;l=sp(t,"%s\r\n",a[6]);k;
l=sp(t,"\r\n.\r\n");k;l=sp(t,"QUIT");k;}closesocket(s);}

274 名前:261 mailto:sage [02/05/11 23:26]
>>273
まだやってみてないけど、ありがとう!



275 名前:デフォルトの名無しさん mailto:sage [02/05/11 23:30]
#include <stdio.h>
#include <winsock.h>
#define k send(s,t,l,0);Sleep(999);while(z=recv(s,t,99,0)){t[z]=0;printf("%s",t);}
#define sp sprintf
main(int c,char **a){SOCKADDR_IN d;WSADATA w;char t[99],z,l;SOCKET s;WSAStartup(
0x0202,&w);s=socket(2,1,0);if(c!=2)return;d.sin_family=2;d.sin_port=htons(25);d.
sin_addr.s_addr=inet_addr(a[1]);if(!connect(s,(PSOCKADDR)&d,sizeof(d))){l=sp(t,
"HELO %s\r\n",a[2]);k;l=sp(t,"MAIL FROM:%s\r\n",a[3]);k;l=sp(t,"RCPT TO:%s\r\n",
a[4]);k;l=sp(t,"DATA\r\n",a[4]);k;l=sp(t,"Subject: %s\r\n",a[5]);k;l=sp(t,"%s\r\
\n",a[6]);k;l=sp(t,"\r\n.\r\n");k;l=sp(t,"QUIT");k;}closesocket(s);}

俺にはコレが限界。

276 名前:デフォルトの名無しさん mailto:sage [02/05/11 23:31]
>>274
動かなかったらごめん。
プロバイダのメール鯖の認証の関係で、
動作確認できなくて・・・

277 名前:デフォルトの名無しさん mailto:sage [02/05/12 00:13]
>>273 >>275
つーか、実行できんやろ。
if(c!=2)return; ってなんや?

278 名前:273 mailto:sage [02/05/12 00:34]
あー HTTPクライアントを適当に変えただけだからね。

基になるソースコードが無いと
誰も手をつけてくれなさそうだったからさ・・・
俺、ネットプログラム初心者です。ごめん。


279 名前:273 [02/05/12 00:42]
#include <stdio.h>
#include <winsock.h>
#define k printf("%d,%s\n",l,t);send(s,t,l,0);Sleep(999);z=recv(s,t,99,0);t[z]=0;printf("%s",t);
#define sp sprintf
main(int c,char **a){SOCKADDR_IN d;WSADATA w;char t[99],z,l;SOCKET s;WSAStartup(
0x0202,&w);s=socket(2,1,0);d.sin_family=2;d.sin_port=htons(25);d.
sin_addr.s_addr=inet_addr(a[1]);if(!connect(s,(PSOCKADDR)&d,sizeof(d))){l=sp(t,
"HELO %s\r\n",a[2]);k;l=sp(t,"MAIL FROM:%s\r\n",a[3]);k;l=sp(t,"RCPT TO:%s\r\n",
a[4]);k;l=sp(t,"DATA\r\n",a[4]);k;l=sp(t,"Subject: %s\r\n",a[5]);send(s,t,l,0);
l=sp(t,"%s\r\n",a[6]);send(s,t,l,0);;l=sp(t,"\r\n.\r\n");send(s,t,l,0);;l=sp(t,"QUIT");k;}closesocket(s);}

一応送信できるはず。
ウザくてごめんね

280 名前:デフォルトの名無しさん mailto:sage [02/05/12 01:27]
>>279
おー、送信できました。実験する場合はローカルにサーバを立てるのがよろしいかと。
ただプログラムの無駄は多そうですので、十分7行になるのでは?

281 名前:デフォルトの名無しさん mailto:sage [02/05/12 01:50]
縮めてみますた

#include <stdio.h>
#include <winsock.h>
SOCKET s;char t[99],z,l,f,*b;k(char*b,char*x){l=sprintf(t,b,x);printf("%s",t);
send(s,t,l,0);if(!f){Sleep(999);t[recv(s,t,99,0)]=0;puts(t);}}main(int c,char**
a){SOCKADDR_IN d;WSADATA w;WSAStartup(514,&w);s=socket(d.sin_family=2,1,0);d.
sin_port=htons(25);d.sin_addr.s_addr=inet_addr(a[1]);if(!connect(s,(PSOCKADDR)&
d,sizeof(d))){k("HELO %s\r\n",a[2]);k("MAIL FROM:%s\r\n",a[3]);k("RCPT TO:%s\r\
\n",a[4]);k("DATA\r\n",a[4]);k("Subject: %s\r\n",a[f=5]);k("%s\r\n",a[6]);k(
"\r\n.\r\n","");f=0;k("QUIT\n","");}closesocket(s);}

282 名前:デフォルトの名無しさん mailto:sage [02/05/12 02:39]
>>261
添付ファイルは難しいが(uuencode形式ならOK)、telnet コマンドを使えばいいのでは???
つーことは、Unix系なら perl かシェルスクリプトで、Windows なら BAT でもできる?

283 名前:281 mailto:sage [02/05/12 02:45]
winsock の使い方が良くわからないので、その辺がどうにもならぬ

#include <winsock.h>
typedef char C;puts(C*);sprintf(C*,C*,C*,C*);SOCKET s;C t[99],l,f;k(C*b,C*x){l=
sprintf(t,"%s%s\r\n",b,x);puts(t);send(s,t,l,0);if(!f)Sleep(999),t[recv(s,t,99,
0)]=0,puts(t);}main(int c,C**a){SOCKADDR_IN d;WSADATA w;WSAStartup(514,&w);s=
socket(d.sin_family=2,1,0);d.sin_port=6400;d.sin_addr.s_addr=inet_addr(a[1]);if
(!connect(s,(PSOCKADDR)&d,sizeof(d)))k("HELO ",a[2]),k("MAIL FROM:",a[3]),k("R\
CPT TO:",a[4]),k("DATA",""),k("Subject: ",a[f=5]),f=0,k(a[6],"\r\n.\r\nQUIT");
closesocket(s);}

284 名前:デフォルトの名無しさん mailto:age [02/05/12 03:35]
>>279
腹が立って作ったプログラムなのに、ツッコマレても謙虚な姿。感心アゲ。



285 名前:tara mailto:sage [02/05/12 05:23]
超簡易七行SMTPクライアントです。エラー処理ほとんど無翅です。
コンパイルすると警告が出ますが、無視してください。

#include <winsock.h>
main(int c,char **a){SOCKADDR_IN d;WSADATA w;char t[999];SOCKET s;WSAStartup(
514,&w);s=socket(d.sin_family=2,1,0);if(c!=7)return;d.sin_port=6400;d.sin_addr
. s_addr=inet_addr(a[1]);if(!connect(s,(PSOCKADDR)&d,sizeof(d))){int z;send(s,t
,sprintf(t,"HELO %s\r\nMAIL FROM: %s\r\nRCPT TO: %s\r\nDATA\r\nSubject: %s\r\n\
\r\n%s\r\n.\r\nQUIT\r\n",a[2],a[3],a[4],a[5],a[6]),0);while(z=recv(s,t,99,0))
{t[z]=0;printf("%s",t);}}closesocket(s);}

実行時には、以下の順序で引数を指定する必要があります。
・SMTPサーバーのIP(ドット区切りの数字で指定)
・発信元のホスト名
・発信者のメールアドレス
・受信者のメールアドレス
・Subject(題名)
・メール本文

ex)
program 127.0.0.1 7gyou.com sender@7line.com rcpt@7line.com subject data

多分これで動くはず、です。
なお、引数の区切り文字がスペースであるため、メール本文その他に
スペースを入れることができません。


286 名前:tara mailto:sage [02/05/12 05:35]
しまった、訂正。
スペースは入れられます。
program 127.0.0.1 7gyou.com sender@7line.com rcpt@7line.com subject "This is test."
と、スペースを含む内容を「"」で囲んでやればOKです。


287 名前:273 [02/05/12 14:53]
>>281 とりあえず送信できることを目指したんで、無駄は勘弁
>>282 それじゃ面白くないじゃん
>>284 ありがとう
>>285 7行達成おめでとう

次はTelnetかFTPクライアント・・・
ネタさえあればこのスレもPatt 1.並なんだけどな


288 名前:261 mailto:sage [02/05/12 15:00]
ネタ提供だけでスマソ。感動しました。
採用してくれてありがとうございましたー!

289 名前:XXXXXXX mailto:sage [02/05/12 15:02]
1> <html>
2> <head>
3> <title>7行プログラム</title>
4> </head>
5> <body bgcolor="black">ここに本文を書きます
6> </body>
7> </html>


290 名前:デフォルトの名無しさん mailto:sage [02/05/12 18:01]
CじゃFTPは不可能だーね
コネクションが2つ必要な時点でヤヴァイ

291 名前:デフォルトの名無しさん [02/05/12 18:49]
>>290
FTP、Javaなら行けるかな

292 名前:デフォルトの名無しさん mailto:sage [02/05/12 22:54]
>>285
stdio.h をインクルードしないと printf,sprintf 使えなくないですか?

293 名前:デフォルトの名無しさん mailto:age [02/05/12 22:56]
age

294 名前:デフォルトの名無しさん mailto:sage [02/05/12 22:58]
いい流れになってきたね



295 名前:デフォルトの名無しさん mailto:sage [02/05/12 23:30]
一番、画面内密度を上げられる言語ってなんでしょう?LISP系かな?

296 名前:デフォルトの名無しさん mailto:sage [02/05/12 23:32]
>>295
BASICじゃないの?大文字だし。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<349KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef