お題:48個目のメルセンヌ素数 2^57885161-1 が見つかった。 この数の最後の10桁を求めよ。
>>157 n=57885161
a=1
n.times{|x|a*=2;a=a%10000000000}
p a-1
実行結果
1724285951
10.19s user 0.02s system 99% cpu 10.310 total
>>157 #include <stdio.h>
int main(){
long long int n = 1, i;
for (i = 0; i < 57885161; ++i) {
n *= 2;
n %= 10000000000;
}
printf("%lld¥n", n - 1 );
return 0;
}
// time ./a.out
// 1724285951
// ./a.out 0.50s user 0.00s system 98% cpu 0.510 total
print (2 ** 57885161 - 1) % 10 % python2 hoge.py 1
>>157 dc
2 57885161 10 10 ^ | 1 - p
1724285951
dcは瞬く間に解が出るな
dcというのは、なんという名前のプログラミング言語でしょうか?
>>157 Io言語
powerMod := method(a, b, m,
r := 1
for(i, 0, b log2 floor,
if(b at(i) == 1, r = r * a % m)
a = a * a % m
)
r
)
Io> powerMod(2,57885161,10**10)-1
==> 1724285951
>>157 Clojure
(prn (dec (.modPow (bigint 2) (bigint 57885161) (bigint 10000000000))))
お題:8桁の整数12345678に下のような操作を100回繰り返してできる整数を求めよ。 操作 左から1,2,3,4,5,6,7,8番目の数字をそれぞれ左から2,4,6,8,1,3,5,7番目に移す。 つまり、ABCDEFGHをEAFBGCHDにする. (灘中学入試問題より)
printf("87654321");
>>168 J言語
a =: "."0": 12345678
b =: /:"."0": 24681357
, ":"0 b&{ ^: 100 a
48372615
>>169 wwwwwwwwwwwwwwwwwwwwwww
お題:将棋盤の左下隅からいちばん外側の升目を右回りに N 舛だけ移動したときの 位置 P を求めよ。左下隅、左上隅、右上隅、右下隅をそれぞれ 99、91、11、19 とする。 例 N = 15 のとき P = 21
暗算出来る算数の問題ばっかり
>>172 Io言語
f := method(N,
a := 20 - N % 32
g := method(p, (p abs - 3)max(1)min(9) )
g(a) * 10 + g(8 - a)
)
Io> f(15)
==> 21
Io> f(2013)
==> 69
>>172 J言語
f =: monad def '(32|y){(99-a),(91-10*a),(11+a),19+10*a=.i.8'
f 15
21
176 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/20(水) 17:01:36.84
お題:Webメーラーを作れ。
177 :
デフォルトの名無しさん :2013/02/22(金) 19:51:39.41
お題:標準入力からの入力をそのまま標準出力へ出力するプログラム。
#include<stdio.h> int main() { int ch; while (EOF != (ch = getchar())) putchar(ch); return 0; }
>>177 Io言語
File standardInput contents print
整数(1〜10程度でよい)を入力させ、中心から始まる螺旋状の数列を表示せよ。 例にあるハイフンは調整のためであり、表示は無用とする。 入力例 1: 1 出力例 1: ---5---4---3 ---6---1---2 ---7---8---9 入力例 2: 2 出力例 2: --17--16--15--14--13 --18---5---4---3--12 --19---6---1---2--11 --20---7---8---9--10 --21--22--23--24--25
>>181 J
spiral =: monad define
a=.1 1$1
n=.2
for. i.y do.
R=.|.n+i.{.$a
n=.n+#R
U=.|.n+i.1+#R
n=.n+#U
L=.n+i.#U
n=.n+#L
D=.n+i.1+#L
n=.n+#D
a=.D,~L,.U,a,.R
end.
a
)
spiral 1
5 4 3
6 1 2
7 8 9
>>177 Lua
io.write(io.read("*a"))
184 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/25(月) 00:29:36.63
お題:英文を入力すると、それに対応する発音記号の列を出力するプログラムを書け。
自己顕示欲を満たす為だけに 両片山氏
>>181 #include<stdio.h>
#define MAX(x,y)(x>y?x:y)
main(){
int n,x,y;
scanf("%d",&n);
for(y=~n++;++y<n;puts(""))
for(x=-n;++x<n;)printf("%4d",1+MAX(MAX(-MAX(-(4*x*x-x+y),-(4*x*x-3*x-y)),4*y*y+y-x),4*y*y+3*y+x));
}
188 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/10(日) 23:49:53.56
お題:Phusion PassengerをWindowsに移植せよ
189 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/11(月) 00:31:44.34
お題:テキストファイルwords.txtに改行区切りの正しい英単語のリストが記されている。 これを元に入力された英文のスペルチェックを行うプログラムを作れ。 スペルの間違った箇所を{{原文の単語::修正候補1||修正候補2||修正候補3}}のように出力し、その他は原文のまま出力すること。 修正候補は原文の単語のスペルに最も近い3個の単語とする。 英単語はアルファベットとハイフンとアポストロフィで構成されるものとする。 その他のピリオドや空白などの文字はそのまま出力するものとする。
> 原文の単語のスペルに最も近い こんなあいまいな仕様でお題とかバカ過ぎ
2単語間の距離を次のように定義する。 1)同じ単語なら距離はゼロ。 2)アルファベット1字違うなら距離は1増える。 3)アルファベット1字多いか足りないならなら距離は2増える。 4)ハイフンが1字多いか足りないなら距離は1増える。 5) 2)〜4)の組み合わせなら考えられる組み合わせの最短距離をその単語の距離とする。 ???これでいい?
192 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/11(月) 01:23:19.30
あっ、アポストロフィを忘れてた。 2単語間の距離は適当に定義すること。これでいいや
>>190 もしかしてSEいないとプログラミングできないタイプ?
アホ SE がいると混乱するので、どっかいってて下さいな
>>184 単語ごとに辞書を引いて発音記号を調べて出力するだけじゃん。出題者のばーか
196 :
デフォルトの名無しさん :2013/03/11(月) 07:06:28.14
クソスレ乙w
大喜利スレなんだから簡単なお題でもいいと思うわけ。
198 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/16(土) 23:26:30.95
お題:与えられた文字列の先頭と終端にある空白文字の並びを取り除く関数を作れ。
199 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/16(土) 23:46:37.41
お題:ある整数が半角数字の文字列で入力された時、それを漢数字表記に変換するプログラムを作れ。
200 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/16(土) 23:48:36.98
お題:逆に漢数字を半角数字に変換するプログラム。
お題:長辺の長さがA、短辺の長さがBの長方形の紙がある。対角の頂点を重ねて折る。 その折り目の長さを求めよ。
>>201 #include<stdio.h>
#include<math.h>
main(){
double a,b;
scanf("%lf%lf",&a,&b);
printf("%f",sqrt(b*b+b*b*b*b/a/a));
}
>>201 Io
f:=method(a,b,(a*a+b*b)sqrt*b/a)
Io> f(4,3)
==> 3.75
>>198 J
ltrim =: monad def'((''@''=y)i.0)}.y'
rtrim =: ltrim &. |.
trim =: rtrim @ ltrim
'[',(trim '@@@a bc@@'),']'
[a bc]
'[',(ltrim '@@@a bc@@'),']'
[a bc@@]
'[',(rtrim '@@@a bc@@'),']'
[@@@a bc]
実際には空白文字のところを @ にしています。
>>198 Io
trim:=method(s,
i:=0
j:=s size-1
while(s at(i)==32,i=i+1)
while(s at(j)==32,j=j-1)
s slice(i,j+1)
)
Io> writeln("[",trim("@@a bc@@"),"]")
[a bc]
>>198 Lua
trim=function(s)return s:match("^%s*(.-)%s*$")end
> print("["..trim("@@@a bc@@@").."]")
[a bc]
お題:緯度と経度を与えると北方向への角度を返す関数を作成せよ。(画面上方を0度とする)
画面上方て
PCディスプレイに、方位・傾きセンサーが必要だな。
210 :
207 :2013/03/19(火) 08:03:26.96
コンパス的な関数を想定して、平面座標上での角度・方角という意味で書きたかったのですが・・・ お題になってませんね。日本語むづかしい。
お題:長方形の紙がある。右の辺を左の辺にぴったり重ねて折る。折ったままの状態で もう一度、右の辺を左の辺に重ねて折る。これを広げると左から谷折り、谷折り、山折 りの折り目がつく。N 回、紙を折ったときの折り目をめよ。山折りを A 、谷折りを V で表す。 例 N=2 のとき VVA N=3 のとき VVAVVAA
ドラゴンカーブってやつですかね?
>>211 J
f =: monado def ' ''VA''{~(,[:0&,-.@|.)^:(y)0'
f 4
VVAVVAAVVVAAVAAVVVAVVAAAVVAAVAA
f 5
VVAVVAAVVVAAVAAVVVAVVAAAVVAAVAAVVVAVVAAVVVAAVAAAVVAVVAAAVVAAVAA
>>201 J
f =: %~*[:%:+&*:
4 f 3
3.75
>>211 Io
f:=method(n,
a:=list
for(i,1,n,
a=list(a,
-1,
a clone reverse map(* -1)
)flatten
)map(v,if(v<0,"V","A"))join("")
)
>>211 main(){
int i=0,n;
for(scanf("%d",&n);++i<1<<n;)
putchar("V A"[i/(i&-i)&2]);
}
n=4 VVAVVAAVVVAAVAA
n=5 VVAVVAAVVVAAVAAVVVAVVAAAVVAAVAA
n=6 VVAVVAAVVVAAVAAVVVAVVAAAVVAAVAAVVVAVVAAVVVAAVAAAVVAVVAAAVVAAVAA
_, ._ ( ・ω・)んも〜 ○={=}〇, |:::::::::\, ', ´ 、、、、し 、、、(((.@)VVAVVAAVVVAAVAAVVVAVVAAAVVAAVAAVVVAVVAAVVVAAVAAAVVAVVAAAVVAAVAA
お題:レーヴェンシュタイン距離を求める
おもしろそうなスレ発見 初心者でもいいっすか?罵ってください!
221 :
デフォルトの名無しさん :2013/03/22(金) 01:42:43.70
>>220 お題にしたがってコーディングしたら、罵ってやる
お題:正方形のタイルをA 行 B 列に並べたときにあらわれる長方形の個数を求めよ。 例 A = 2、B = 2 のとき 9 個 A = 3、B = 4 のとき 60 個
>>219 Io
f:=method(a,b,as:=a size;bs:=b size
if(as<1,return bs)
if(bs<1,return as)
t:=List clone setSize(as)map(List clone setSize(bs)map(0))
t atPut(0,t at(0)map(i,v,i))map(i,v,v atPut(0,i))
for(i,1,as-1,
for(j,1,bs-1,
t at(i)atPut(j,
list(t at(i-1)at(j)+1,
t at(i)at(j-1)+1,
t at(i-1)at(j-1)+if(a at(i)==b at(j),0,1)
)min
)
)
)
t last last
)
Io> f("abc","xayzbc")
==> 3
>>223 ((a + 1) * a / 2) * ((b + 1) * b / 2)
タイルの模様は
お題:平面座標上の点 A(x1, y1) から B(x2, y2) まで直線を引いたとき、点Aを基準とした直線ABの角度を求めよ。 *座標系の行列は行がY、列がXとする。 *角度の始まりは、点AのY軸の行数0(y == 0)を0°する。 例: A(10, 10), B(10, 8) => 0° A(10, 10), B(12, 8) => 45° A(10, 10), B(12, 10) => 90° A(10, 10), B(12, 12) => 135° A(10, 10), B(10, 12) => 180° ... A(10, 10), B( 8, 8) => 315°
>>223 Io
f := method(a,b,(a+1)combinations(2) * (b+1)combinations(2))
Io> f(2,2)
==> 9
Io> f(20,20)
==> 44100
>>229 Io
f : =method(x1,y1,x2,y2,
180-((x2-x1)atan2(y2-y1)*180/3.141592)round
)
Io> f(10,10,8,8)
==> 315
お題:自然数 N が与えられたとき、各桁を一桁の数字として繰り返し足していき合計が N になるかどうか判定する関数。 例 N=25、2+5+2+5+2+5+2+5=28 > 25 --> 偽 N=12、1+2+1+2+1+2+1+2=12 --> 真
233 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/03/26(火) 22:36:44.78
>>232 C++
bool f(int N) {
char s[64]; int sum, i;
sprintf(s, "%d", N);
for(sum = 0; sum < N; ) {
for(i = 0; s[i] != '\0'; i++)sum += s[i] - '0';
}return sum == N;}
bool func(int a){ int b=0; for(int i=a; i>0; i/=10) b+=i%10; return a%b==0; }
お題:できる限り速くフーリエ変換を行う関数を作れ。
つまり早くレスした人の勝ち
お題:平面幾何学の問題を解く人工知能を作れ 貴様らにできるかな?w
お題:'('と')'でできた文字列が与えられると、対応しているカッコの対の個数を返す関数。 例。"())" → 2 "(())" → 4 ")(()()" → 5
お題:行列Aのサイズ(縦と横)と行列Aの各成分がCSV形式のテキストファイルで与えられている。Aの逆行列を掃き出し方で求めよ。
>>239 各成分はともかく、サイズのフォーマットはどうなってんの
一行目だけ2列でそこに縦横みたいな?
>>241 縦のサイズ,横のサイズ\n
(1,1)成分,(1,2)成分,...\n
(2,1)成分,(2,2)成分,...\n
...
みたいな感じで頼む
>>242 ナニソノ微妙なフォーマット…単に列挙しただけのCSVじゃダメなのかYO
お題:二足歩行する猿が一匹いる。猿が今考えている内容を標準出力せよ。
246 :
232 :2013/04/05(金) 05:10:26.49
>>234 例がまずかったでしょうか?
N=13、1+3+1+3+1+3+1=13
なども真のつもりです。
お題:a * b * c の直方体がある。 a + b = c とする。この直方体の一つの頂点と これに隣接する三つの頂点からなる四面体の表面積を求めよ。
>>246 足す順序は上位桁から?
それとも入れ替えてもいいの?
249 :
デフォルトの名無しさん :2013/04/05(金) 22:45:49.74
>>248 > 足す順序は上位桁から?
はい。
> それとも入れ替えてもいいの?
入れ替えはなしです。
>>247 Io
heron:=method(a,b,c,((a+b+c)*(b+c-a)*(a-b+c)*(a+b-c))sqrt/4)
f:=method(a,b,c,
heron((a*a+b*b)sqrt,(b*b+c*c)sqrt,(c*c+a*a)sqrt)+(a*b+b*c+c*a)/2
)
Io> f(1,2,3)
==> 9
Io> f(2,3,5)
==> 25
Io> f(3,5,8)
==> 64
Io> f(15,20,35)
==> 1225
お題:0より大きく1より小さい循環小数を分数に変換せよ。 循環小数は循環する部分を丸括弧でくくった表記とする。 例 0.08(3) -> 1/12 0.(142857) -> 1/7 0.2(36) -> 13/55
お題:自然数Nの倍数で10進表記で1または0からなる数の最小値を求めよ。 例 N=2 -> 10 N=21 ->10101 N=2013 -> 1101111
>>252 Io
f:=method(s,
a:=s split(".","(",")")
b:=a at(1).. a at(2)
x:=c:=b asNumber-if(a at(1)=="",0,a at(1)asNumber)
y:=d:=10**(b size)-10**(a at(1)size)
while(y>0,t:=x%y;x=y;y=t)
(c/x).."/"..(d/x)
)
Io> f("0.08(3)")
==> 1/12
>>255 parse() にみえる重複コードを処理したい
>>254 Io
f:=method(n,
a:=b:=1
while((b=a asBinary asNumber)%n>0,a=a+1)
b
)
Io> f(777)
==> 10101
260 :
デフォルトの名無しさん :2013/04/15(月) 11:55:15.89
お題:ある地点から1歩前へ進み右または左に向きを変え、つぎに前に2歩進み 右または左に向きを変え、というように歩数を1づつ増やしながら進む。 最初の地点へ戻るような道順をひとつ求めよ。道順は右(R)、左(L)を並べた "LRRL..."などの文字列で表す。
仮に原点(N0E0)に北(N)を向いているとして、 - 座標 向き 0 N0E0 N L N1E0 W LR N1E-2 N LRR N4E-2 E ってことなのかな。原点に戻れる気がしないぞw
>>261 8n-1回か8n-2回方向転換したときに戻れる。
char* returnable() { return("LLRLLL") }
>>260 Io
for(a,0,2**16,
x:=0
y:=1
v:=0
(b:=a asBinary)foreach(i,c,
i=i+2
v=(v+if(c==49,1,3))%4
x=x+list(0,i,0,-i)at(v)
y=y+list(i,0,-i,0)at(v)
)
if(x==0 and y==0,writeln(b translate("01","LR")))
)
実行結果
RRLRRR
RRRLRRR
RLLLLRLRRLLLLR
RLLLRLRLRLLLRL
(略)
RRRRLLLRRRRRLLL
RRRRRRRLRRRRRRR
LとR逆にしたの表示すれば倍になるな
スタックで楽勝とか思ったら来た道戻れないのね
267 :
デフォルトの名無しさん :2013/04/16(火) 19:32:00.72
お題:1人から最大N人の人が集まる予定である。集まった人にみかんを均等に 配るにはみかんをいくつ用意すればよいか? たとえば最大10人の予定でみかんを10個用意して来た人が7人だと3個あまってしまう。
269 :
デフォルトの名無しさん :2013/04/16(火) 19:38:05.55
>>268 N個ってwwww
N個じゃダメって上に書いてあるじゃん馬鹿なの?w
>>269 もちつけ
そして、ジックリ見るか文字を拡大しろ
2〜Nの素数の積か
ジュースにして分ける
2からNまでの最小公倍数
>>267 Io
gcd:=method(a,b,if(b==0,a,gcd(b,a%b)))
lcm:=method(a,b,a*b/gcd(a,b))
f:=method(n,x:=1;for(i,2,n,x=lcm(x,i));x)
Io> for(i,1,15,write(f(i)," "))
1 2 6 12 60 60 420 840 2520 2520 27720 27720 360360 360360 360360
|番兵|__ ( ・ω・)〜♪ ○={=}〇, |:::::::::\, ', ´ 、、、、し 、、、(((.@)12 60 60 420 840 2520 2520 27720 27720 360360 360360 360360
化学っぽい問題を一つ。 お題:水素原子、炭素原子、塩素原子からなる分子量100以下の分子の組合せの個数を求めよ
ヒント:元素の組合せにより結合の角度は決まっている。分子量の小さい順に幅優先探索する。 原子が衝突する場合を除外して枝切りを行う。 この問題が解けたら秘密結社に入会できるかも?
280 :
デフォルトの名無しさん :2013/04/18(木) 17:05:05.37
お題:2013!と2013^1749、どっちが大きい?
>>280 Ruby
def fact(n); n == 0 ? 1 : n * fact(n - 1); end
fact(2013) <=> 2013 ** 1749
2013!のほうがでかい。
再帰よりループのほうが安心。 (1..2013).to_a.inject(1) {|r, n| r * n}
>>283 (1..2013).inject(:*)
だけでいい
>>284 シンボル渡せるのって1.9から?
1.8.6じゃno block given (LocalJumpError)となる。
287 :
デフォルトの名無しさん :2013/04/20(土) 09:05:11.75
お題:表計算ソフトで使われる列名 A,B,C,...,Z,AA,AB,AC,...,AZ,BA,BB,BC,... をAを1番目とした番号に変換せよ。
>>287 Io
f:=method(s,a:=0;s foreach(i,v,a=a+(v-64)*26**i);a)
Io> f("AA")
==> 27
Io> f("AAA")
==> 703
Io> f("IO")
==> 399
Io> f("LUA")
==> 1234
>>289 間違えました。訂正します。
f:=method(s,a:=0;s asMutable reverse foreach(i,v,a=a+(v-64)*26**i);a)
Io> f("AA")
==> 27
Io> f("AB")
==> 28
Io> f("AAA")
==> 703
Io> f("AAB")
==> 704
Io> f("IO")
==> 249
Io> f("LUA")
==> 8659
291 :
288 :2013/04/20(土) 23:26:19.91
>>290 もっと単純でよかった。
f:=method(s,a:=0;s foreach(v,a=a*26+v-64);a)
>>287 % Prolog
'表計算ソフトで使われる列名 A,B,C,...,Z,AA,AB,AC,...,AZ,BA,BB,BC,...をAを1番目とした番号に変換せよ'(_列名,_番号) :-
'列名を文字順序番号ならびに変換'(_列名,_文字順序番号ならび),
文字順序番号ならびを連続番号に変換(_文字順序番号ならび,0,_番号).
'列名を文字順序番号ならびに変換'(_列名,_文字順序番号ならび) :-
findall(_文字順序番号,(
sub_atom(_列名,_,1,_,_文字),
文字順序番号(_文字,_文字順序番号)),
_文字順序番号ならび).
文字順序番号(_文字,_文字順序番号) :-
nth1(_文字順序番号,['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'],_文字).
文字順序番号ならびを連続番号に変換([],_連続番号,_連続番号).
文字順序番号ならびを連続番号に変換([N|R],_番号_1,_連続番号) :-
_番号_2 is _番号_1 * 26 + N,
文字順序番号ならびを連続番号に変換(R,_番号_2,_連続番号).
>>287 % Prolog
'表計算ソフトで使われる列名 A,B,C,...,Z,AA,AB,AC,...,AZ,BA,BB,BC,...をAを1番目とした番号に変換せよ'(_列名,_番号) :-
atom_codes(_列名,_文字コードならび),
順序番号に変換する(_文字コードならび,_番号).
順序番号に変換する([],0).
順序番号に変換する([_文字番号|_残りならび],_番号) :-
length(_残りならび,_乗),
順序番号に変換する(_残りならび,_番号_1),
_番号 is (_文字番号 - 64) * (26 ^ _乗) + _番号_1.
お題:頂点座標から多角形の面積を求める
296 :
288 :2013/04/23(火) 05:25:47.55
>>295 一般的な質問です。
多角形の頂点座標と言う場合ですが、閉路をなすように座標を並べ直すところから
やる必要があるものですか?
>>297 そうなると図形が一意じゃないので座標の順序は与えられるものと考えるのが自然
299 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 10:50:52.26
お題:与えられた多角形の内部に与えられた座標の点が含まれるか判定
>>295 % Prolog
頂点座標から多角形の面積を求める(_閉路をなす多角形の頂点座標ならび,_多角形の面積) :-
'多角形の面積は iが1からnまで変化する範囲で Xi * (Yi+1 - Yi-1) の総計となる。(ただし Yn+1 = Y1 Y0 = Yn)'(_閉路をなす多角形の頂点座標ならび,_多角形の面積).
'多角形の面積は iが1からnまで変化する範囲で Xi * (Yi+1 - Yi-1) の総計の半分となる。(ただし Yn+1 = Y1 Y0 = Yn)'(_閉路をなす多角形の頂点座標ならび,_多角形の面積) :-
'ただし Yn+1 = Y1 Y0 = Yn'(_閉路をなす多角形の頂点座標ならび,_拡張した座標ならび),
'多角形の面積は iが1からnまで変化する範囲で Xi * (Yi+1 - Yi-1) の総計の半分となる。'(_拡張した座標ならび,_多角形の面積).
'多角形の面積は iが1からnまで変化する範囲で Xi * (Yi+1 - Yi-1) の総計の半分となる。'(_拡張した座標ならび,_多角形の面積) :-
findsum(U,(
append(_,[(_x1,_y1),(_x2,_y2),(_x3,_y3)|_],_拡張した座標ならび),
U is _x2 * (_y3 - _y1)),
S),
_多角形の面積 is S / 2.
'ただし Yn+1 = Y1 Y0 = Yn'([Y0,Y1|_残り座標ならび],_拡張した座標ならび) :-
append([Y0,Y1|_残り座標ならび],[Y0,Y1],_拡張した座標ならび).
findsum(U,P,Sum) :-
findall(U,P,L),
sum(L,Sum).
sum([],0).
sum([A|R],Sum) :-
sum(R,Sum1),
Sum is Sum1 + A.
302 :
300 :2013/04/23(火) 11:28:00.06
>>300 % まちがえました。
'ただし Yn+1 = Y1 Y0 = Yn'([_0,_1|_残り座標ならび],_拡張した座標ならび) :-
append([_0,_1|_残り座標ならび],[_0,_1],_拡張した座標ならび).
% リスト(私はならびと呼んでいる)要素は Yではなく、(X,Y)でした。
要素を示すのには _0,_1 の方がよいでしょう。
>>295 Ruby
x = [x1,x2,...,xn], y = [y1,y2,...,yn] とする。
((x+[x[0]]).zip(y+[y[0]]).each_cons(2).map{|p,q|p[0]*q[1]-p[1]*q[0]}.inject(:+)/2).abs
>>298 ?
「座標の順序は与えられるものとする」
とお断りを書くのが自然 だと思いますが。
すみません。
幾何学シリーズ続けます。 お題:多角形が線対称かどうか判定
307 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/23(火) 17:24:30.94
>>306 ちょっと難しすぎたか。凸多角形に限定しよう。
ヒント:対称の線はある辺の中点か頂点の上を交わる。
久々に来たら宿題スレになってた
しかし、せっせと回答書いてるなw
今度は物理学。 お題:減衰するばねの振動の様子をコンソールで再現しなさい。ばねの先を'*'で表し、それを振動させなさい。 プログラムの中でフックの法則とニュートン則を使うこと。
お願いですからfabsの前にstd::付けてくれませんか どういうコンパイラ使ってんだよ
>>31 gcc/g++ 4.7.2
http://ideone.com/pLfOZ5 http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library#C_standard_library The only difference between these headers and the traditional C Standard Library headers is
that where possible the functions should be placed into the std:: namespace
(although few compilers actually do this).
(although few compilers actually do this).
(although few compilers actually do this).
(although few compilers actually do this).
(although few compilers actually do this).
(although few compilers actually do this).
>>314 標準規格に逆らってそんな事を言われても
それにWikipediaがソースとかwww
>>315 gcc やあの clang でも <c*> に std:: は要らないからね‥‥ std:: を強要するコンパイラって存在するの?
bccがそうだぞ 例外が一つでもあればそれで十分
318 :
312 :2013/04/27(土) 08:30:03.42
分かったら下手な反論するな ボロが出るだけだぞQ
心理学の先生乙
それ皮肉にもなってないから 負けを認めろよカス
いや俺QZじゃねーからそんな勝敗などどうでもいいです
息を吐くように嘘をつくQ
この先生、手におえないとなるとすぐQZ認定、朝鮮人認定して来ちゃうんだよね ヤブ
お前も面倒くさくなるとすぐに相手を心理学の先生認定してる癖に良く言うよ
面倒だからじゃなくて
>>317 の名言の時点ですでにそう思ったよ
やぶ〜
ワロタwww ブーメラン決まりすぎだろw 頭の悪い奴はどこまで行っても頭が悪いんだな
>>327 それいつものお前だからwww
本気で言ってるのかww
負け犬の遠吠えにしか聞こえませんねえ
都合が悪いからそう聞こえちゃうんじゃないの?
お前にとって都合が悪いわけかそうかそうか
>>331 そのレスじゃ会話が成り立ってないだろww
ちょっと無理があるんじゃない?
そうかそうかよーくわかったぞ
お題:二体問題におけるケプラーの法則を模擬実験により検証しなさい。三次元での計算が分からない場合は 二次元でもよろしい。面積は小さな三角形に分解して計算すること。
336 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/04/27(土) 21:43:01.50
QZに挫折感を味わってもらいたいので難問を用意しました
ピタゴラスの三体問題をルンゲクッタ法により正しい結果が得られるように計算し グラフィックで図示せよ
リーマン予想を証明せよ
>>338 お前自分で解ける題だけ出せよ
>>337 はJavaで書かれたソースがあちこちに転がってるんで、C#に移植すればちゃんと動いた
お題:次のようなシンプルなCSV形式ファイル「MATRIX.CSV」で与えられたサイズ無制限の実正方行列の逆行列を求めた後、検算せよ。 各成分の誤差は10の-5乗以下とする。逆行列がないときは「逆行列はありません」と表示せよ。 検算が成功したら逆行列を表示せよ。失敗したら「計算が合いません」と表示せよ。 (1,1)成分,(1,2)成分,…\n (2,1)成分,(2,2)成分,…\n …
LU分解使っていいんか
お題:ヴィジュネル暗号で暗号・復号化する関数を作成せよ。 ・平文は "programming" とする。 ・鍵は任意とする。
>>344 JavaScript
var toCipher = function( k, p ) {
var ret = "";
for (var i=0; i<p.length; i++)
ret = ret + String.fromCharCode( 97 + ((p.charCodeAt(i)-97) + (k.charCodeAt(i%k.length)-97)) % 26);
return ret;
};
var toDecry = function( k, c ) {
var ret = "";
for (var i=0; i<c.length; i++)
ret = ret + String.fromCharCode( 97 + ((c.charCodeAt(i)-97) - (k.charCodeAt(i%k.length)-97) + 26) % 26);
return ret;
};
var plain = "programming";
var key = "hoge";
var cipher = "";
alert( cipher = toCipher( key, plain ) );
alert( toDecry( key, cipher ) );
結果
wfukyosqpbm
programming
346 :
312 :2013/04/28(日) 11:24:01.41
>>336 ご配慮感謝ですが、
>>306 で既に十二分に挫折感を味わっておりますのであります。
いったいどうすればいいんだろう‥‥微塵もアイディアが沸いてきません、困った、困った‥‥。
だからお前は頭が悪いんだって 自覚出来ない馬鹿って最悪だな
>>347 ありがとうございます。
もっと罵ってください。
349 :
312 :2013/04/28(日) 12:19:30.51
>>349 マゾヒズムか
キモ
精神科の薬飲んで寝てろ
352 :
312 :2013/04/28(日) 13:02:35.48
>>350 精神科の薬は持ち合わせてないので座薬でもいいですか?
社会不適合者はいずれにしても近々強制的に精神科に連れていかれるハメになる
356 :
312 :2013/04/28(日) 22:07:00.55
お題:四角形がある。ひとつの頂点には同じ長さの辺が直角につながっている。この 頂点の対角の頂点もふたつの辺が直角につながっている。ふたつの辺の長さの和がAの とき、この四角形の面積を求めよ。
お題:自然数Nが与えられたとき、Nの各桁の和をとり結果が一桁でなければ各桁の和 をとることを繰り返す。最後の一桁の数を求めよ。 例 412205725 -> 4+1+2+2+0+5+7+2+5=28 28 -> 2+8=10 10 -> 1+0=1
・宿題の丸投げは問題文の著作権(著作権法 二十三条 公衆送信権)を侵害する。 ・問題文には第三者の著作物が含まれている場合ある。 著作権法第三十五条の規定により第三者の著作物が利用されている場合もある。 問題丸投げは同条の規定外なので第三者の権利侵害にあたる ・丸投げを煽るテンプレは著作権侵害の教唆にあたる ・宿題丸投げはカンニングと同等の行為として学則による処罰の対象になる。 ・悪質なカンニング行為は偽計業務妨害(刑法 二百三十三条)として捜査の対象になる。 ・カンニング行為を煽っているテンプレはその教唆犯(刑法 六十一条)
QZが今度はこんなところで自演質問しだしてる マジで病気なんだな
>>361 本科目の受講生より、こちらにて出題の課題を
インターネットに投稿している者がいるとの連絡を受けました。
今回の課題は学生の理解を深める為に個別レポートとして出題されたものであり、
問題の解答そのものを丸投げすることは課題の趣旨に反する行為となります。
初回の講義でお話しましたように、ソースコードの書き方には個人差があり、
過去に提出したレポートなどから本人が書いたものかどうか判別することは十分可能です。
他人が書いたソースコードをレポートとして提出することは重大な不正行為に当たります。
提出されたレポートにおいて不正が確認された場合、本学の懲罰規程に従い厳しく処罰されます。
締切りは明日の17時とまだ時間もいくらか残されていますので、
この問題を投稿した、または参考に読んでいる学生には自分の力で
今回の課題に取り組んで頂けることを期待しています。
実質ここが宿題スレになってますね
>>365 自前の連絡網で指摘したれ
てかこのスレをウォッチして、コピペ回答したやつを処分(大学講義なら不可、一般人向けなら出入り禁止)してやった方が教育って意味では有効だよ
大学の場合で、そこらじゅうでコピペ丸投げ丸写しってバカは不可が積み重なって留年落第だけど、それもある種の薬にはなる
ここで質問が解決したと思われるのにもかかわらず わざわざ糞コードをうpするQZが出現すると予測
このキチガイ、こっちにもお出ましか
QZは静かなとき場所を狙って自演質問したり糞コードを上げる糞野郎、まさにム板の恥 このことからもQZがキチンであることは明白
動揺してるんじゃね?ww
f x|x>=10 = f(x `mod` 10 + f(x `div` 10)) |otherwise = x うpしてみた。 N%9 じゃあ 9%9=0 じゃない
(n-1)%9+1 ってすればいいとおもう
はいきた叩いた後の自演回答
>>375 >>376 この状況で答えをレビューするのはスルーだからじゃない
QZの巧妙にして拙い自演レビュー
379 :
375 :2013/04/30(火) 21:09:55.55
俺がQZなのか。 まあいいけど (0-1)%9+1 = 9 haskellだと、(-1)`mod`9 = 8 になる
>俺がQZなのか。 >まあいいけど QZじゃない人はそんなこと言わない。
382 :
375 :2013/04/30(火) 21:40:35.15
>>381 知らなかった、ありがとう
(-1)`rem`9 = -1
QZ華麗にレス加速
QZは今全裸でここを見ているんだろうな なので俺も全裸になります
QZは自己顕示欲を満たす為ならどんなスレでも荒らす寄生虫
>>373 キチン(chitin)は直鎖型の含窒素多糖高分子で、ムコ多糖の一種。ポリ-β1-4-N-アセチルグルコサミンのこと。語源は古代ギリシアの衣服であったキトン(chiton)に由来し、「包むもの」を意味する。
節足動物や甲殻類の外骨格すなわち外皮、軟体動物の殻皮の表面といった多くの無脊椎動物の体表を覆うクチクラや、キノコなど菌類の細胞壁などの主成分である。-- Wikipedia "キチン"
>>377 ネタ振りも回答もコテつけ無いならコテの自己顕示としてなんの役にもたちませんがな
むしろ君がコテ認定することで初めてコテの行動として認知される、つまり君こそがQZだったのだよ!
>>385 ちょっと君の基準で「QZの」「自己顕示欲を満たす」「荒らしに該当する」書き込みをリストアップしてくれんかね?
自己顕示を満たしながらも荒れる要素を持った書き込みはQZ認定して罵倒する君のような書き込みだけのような気がするんだが
QZまさかの他人をQZ認定 やっぱり我慢できなくてレスを返したな さんざん叩かれて自己否定に目覚めたか?
QZは隔離スレで仕事してる っと言いながら宿題スレ等に顔だして荒らしてるQZは馬鹿
いうまでもないがQZを下に見れる俺は明らかにQZより格が上
QZ必死にレスを稼いで質問を再開させる試みをするが 現在難航中
そして慌てふためくQZを想像しながら俺は全裸で待機中
394 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/01(水) 16:52:46.20
ベクトル幾何をやってれば解ける問題だと思うけど、解けた人居ないとは。。。 逆行列の問題もまだだね。
QZはよくやってる方だよ。悔しかったらQZみたいにきれいなコードを書いてみてね。 ところで、線対称かどうか判定するプログラムは、何か社会に役立ちますか? 何にも思いつかないんだけど。
バイリンガルな調理ロボットがいます。あなたの得意なプログラム言語は理解すると します。さて、次の料理 「シシ ケバブ」の作り方をロボットに教えなさい。 ・材料 羊肉1Kg トマト4個 青トウガラシ6本 タマネギ1個 レモン汁 塩 こしょう タイム トマトペースト ヨーグルト オリーブ油 レッドペッパー ・作り方 羊肉は角切りにし、レモン汁、塩、こしょう、タイム、トマトペースト、 ヨーグルト、オリーブ油、レッドペッパー、タマネキのみじん切りを合わせたものを ひと晩漬け込む。トマトは櫛切り、青トウガラシは2つ切りにする。肉と交互に串を差し、 炭火で焼く。 「トルコ料理 東西交差路の食風景」柴田書店 1992年刊より P63に写真があります。
>>397 enum 切断タイプ { みじん切り, 角切り, 櫛切り, 2つ切り };
bool 運ぶ(物体& o, 位置& p, 運搬手段 m);
bool 持ち上げる(物体& o);
bool 切る(物体& o, 切断タイプ ct, 大きさ 目安);
bool 入れる(入れ物& c, 物体& o);
bool 刺す(刺す物& s, 物体& o);
void 待つ(時間& t);
>>396 > ところで、線対称かどうか判定するプログラムは、何か社会に役立ちますか?
溶接ロボットの計算では使われますよ。
>>359 A^2/4より小さい場合ってどういう形だろう?
思い浮かばない。
今度は片山による自演が始まった・・・
ほんとこの板って自演しほうだいだよな
>>400 >この頂点の対角の頂点もふたつの辺が直角につながっている。
問題文の後半に現れる二辺は、前半と違って「直角にまじわっているだけで長さが等しいとは限らない」点に注意、一種の引っ掛けだね。
四角形AOBCにおいて、∠AOB = ∠ACB = 90度、AO = OB = A/2、ただしAC=CBとはかぎらない、とする。
∠ACB=90度だから、C は AB を直径とする円周上(かつC と反対側、反対側になければ AOBCは四角形にならない)にある。
このとき、四角形AOBC が最大なのは、AC=CB ゆえにAOCBが正方形のとき、最小なのはC=AまたはC=Bのとき。
ごめん、いろいろ間違いがあったので書き直すね。
四角形AOBCにおいて、∠AOB = ∠ACB = 90度、AO = OB = A/2、一方でAC=CBとはかぎらない、とする。
∠ACB=90度だから、C は AB を直径とする円周上(かつO と反対側、Oと反対側になければ AOBCは四角形にならない)にある。
このとき、四角形AOBC が最大なのは、AC=CB ゆえにAOBCが正方形のとき、最小なのはC=AまたはC=Bのときだが、このときは AOBC は四角形にならないので、
>>359 では不等号に等号は含ませないようにしているね。
何の必要性も無いコテが容認されてる専門板は総じてゴミ以下
>>406 お前が使ってるPCを、ちょっと賢いチンパンジーに与えた方が有意義に使いそう
ふつーに考えて、等しい長さの辺の和のほうじゃなくて、残りの二辺の和がAじゃないと問題として低レベルすぎる
a^2+b^2=c^2 a+b=A c^2/4+ab/2=s s=A^2/4
>>395 逆行列は予約済みだからね!絶対解かないでよ :−)
ドヤ顔で問題誤読してるいつものQだったな
お題:原点、(a,b)、(a,-b)を通る円の半径を求めるプログラム。
(a^2 + b^2) / (2 * a)
(a^2 + b^2) / (2 * |a|)
もはや式を答えるスレと化してコーディングしてないことないか?
>>413 Aを固定させると斜辺が変動するからだよ
>>417 式を見ればコーディングするのはバカでもできるだろ
コーディングはこのスレのお約束
式だけで済むお題ばっかりだからな。
5月4日(みどりの日)に入場無料になる施設は次の通りです。 上野動物園 多摩動物公園 井の頭自然文化園 葛西臨海水族園 神代植物公園 夢の島熱帯植物館 新宿御苑 旧岩崎邸庭園 旧芝離宮恩賜庭園 旧古河庭園 清澄庭園 小石川後楽園 殿ヶ谷戸庭園 浜離宮恩賜庭園 向島百花園 六義園 問題 :: あるカテゴリー(例えば日本庭園)を質問した時に、上記の施設から 適切なものをひとつずつ回答するプログラムを作りなさい。
要素に重複のないリスト(リストがない場合は配列)がある。 このリストの部分リストを先頭要素と末尾要素を指定することによって、 切り出し、この部分リストだけを昇順に整列する。 切り出されたリストの前部のリストを前に、同じくリストの残り部分を 後に結合した新たなリストを作るプログラムを示せ。
426 :
425 :2013/05/03(金) 09:33:53.34
元のリストを破壊することなしに、の意味です。
>>425 Io
f := method(x, s, e,
x slice(0, s) appendSeq(x slice(s, e + 1) sort) appendSeq(x slice(e + 1))
)
Io> a:=list(9,8,7,6,5,4,3,2,1,0)
==> list(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
Io> f(a,1,4)
==> list(9, 5, 6, 7, 8, 4, 3, 2, 1, 0)
Io> a
==> list(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
問題です。 5位まで、賞金を出るレースを考えてください。 賞金は1-5位まで降順に割り当てられています。 同タイムの時は下位の席次を削り、この席次でその順位に割り当てられた 賞金を同等に配分します。ところが消極的な主催者は表彰状の用紙が 5枚しかないことに悩んで、最下位順位者が多数いて、その結果表彰者が 6名以上になった場合は最下位順位者はいなかったことにして、表彰状が 不足することを避けようと考えました。 成績ファイルから1行ごとに競技者名とタイムが速い順に取得できるとして、 主催者の意図する賞金配分を出力するプログラムを作りなさい。
429 :
428 :2013/05/03(金) 11:11:42.70
それぞれの順位に割り当てられた賞金を合算したものを、 同タイム者に同等に配分します。 ですね。
>>425 haskell
import Data.List
partSort::Ord a=>Int->Int->[a]->[a]
partSort s e xs=fs ++ (sort ms) ++ ts
where
(fs,ys)=splitAt s xs
(ms,ts)=splitAt (e-s+1) ys
お題:点(0,a)と点(b,0)を結ぶ線分が(1,1)を通り、長さが4のとき この線分とx軸、y軸に囲まれた三角形の面積を求めるプログラム。 0<a, 0<b, a<b とする。
>>434 条件に合うパラメータが存在しないので、作れない。
ごめん、計算間違いだった。 解は存在する。
437 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/06(月) 00:12:49.77
直線の方程式は@y = -ax/b + aであり、条件式Aa = b/(b-1)とBa^2 + b^2 = 16が成立する。 Bと0<aより、Ca = √((4-b)*(4+b))である。ACより(4-b)*(4+b) = b^2/(b-1)^2であり、(16-b^2)*(b-1)^2 = b^2となる。 三角形の面積はCa*b/2 = b*b / (b-1) = (16-b^2)*(b-1)となる。面積はゼロ以上なので1≦b≦4。
438 :
デフォルトの名無しさん :2013/05/06(月) 00:30:04.41
条件式Aa = b/(b-1)とBa^2 + b^2 = 16とD1≦b≦4が成立するとき、面積はCb*b/(b-1)であり、それ以外のとき、面積はゼロである。 もっと単純化できるが、これ以上は数学の問題になる。
プログラムは?
440 :
デフォルトの名無しさん :2013/05/06(月) 00:39:24.64
方眼用紙に描いてみればだいたいの位置がわかる。条件式を整理してbに関する4次方程式をニュートン法で解くのが一般的か
そういう話は数学板に行ってやれ ここはプログラム板だ
>>434 af=1.0
at=4.0
eps=10e-10
dif=1.0
while dif.abs>eps
am=(af+at)/2.0
b=1.0/(am-1.0)+1.0
dif=16-am*am-b*b
if(dif-eps>0)
af=am
else
at=am
end
end
p am*b
結果:5.123105625641652
>>442-443 構造体名、変数名が適当すぎてソースが読みづらい
数学的なアルゴリズムを使用する場合は使用したアルゴリズムや数式をきっちり明記しろクズ共が
>>434 Maximで試行錯誤。条件に合う解の取り出しかたがわからないけど
3番目の解が 0<a,0<b,a<b をみたす。(4個、出力されたものから手動で切り出した)
(%i25) solve([a^2+b^2=16,(a-1)^2+1=c^2,(b-1)^2+1=d^2,c+d=4,s=a*b/2],[a,b,c,d,s];
[a = 1.362200117027502, b = 3.760905577029265, c = 1.063573607320597,
d = 2.936426116838488, s = 2.56155303030303],
>>444 構造体?
どこにあるの?
>数学的なアルゴリズムを使用する場合は使用したアルゴリズムや数式をきっちり明記しろ
/* px : x = (y - py) : y -> x(y - py) = px.y*/
で十分。
>>442 はこの部分が一番の肝でそれ以外はとるにたらない蛇足のようなものだ。
構造体は442
とりあえずお前が馬鹿なのはわかった
>>448 自己紹介乙
そんなんだから単位落とすんだよ(ノ∀`)'`,、'`,、'`,、'`,、'`,、
>>446 ぬーとん法だのなんだの書いとけってことだよ
そんなんじゃ実社会のプロジェクトで通用しないのがわからないのかカス
まあそれ以前に、ソース見てアルゴリズムと結びつかない奴が、ここで勉強しようってのが間違い。
いかにしてオシロスコープは測定するのをやめ RC5 Cracking をするようになったか
2chで勉強する”プロ”w
>>440 >>445 最大で4つあるという根のどれが題意に適合するかわからないし求める根に収束する初期値をどう設定すればいいのかよくわからないし高次のニュートン法って収束しない場合もあったり特異点が散らばってたりして今一これQが最近やってたね
えーと、何年生で習うんだっけ
5年生くらいじゃない?
Qは小学生未満の頭なのか
ショタコンだったの?
ただのニートだよ
QZ、逆行列まだか?
QZは宿題レベルの問題しか解けない可哀そうな子
466 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/13(月) 19:55:47.53
さっきテレビで見たけど、クロスワードで月収150万円だってよw!! 自動クロスワード作成プログラム作ったら大金持ちになれるかもよ!
半自動なら作れそうだが全自動は難しいかな・・
ヒント/ワード対応をどう生成するかだなぁ… 辞書やWikipediaから自動生成で使い物になるかどうか
単語のヒントは、手作りで単語と一緒にDBに持たせる
467の言う半自動ってのがソレのことでは?
471 :
467 :2013/05/14(火) 03:44:48.95
さすがに単語・ヒントのペアを作るのは半自動にせざるを得ないんじゃないかな。 全ての辞書の単語にヒントを作るんじゃなくて、問題が出来上がった時に 使われている単語についてのみヒント作れば良い。 半自動とは、単語を並べる作業。例えば +--------------- | 沖 |富 縄 |山 県 |県 +--------------- とあるとき、「山 県」を[範囲選択]して[検索]したら辞書から 候補 「山形県」 「山梨県」 「山口県」 などを表示してユーザに選ばせる半自動
それは流石にやる気無さすぎだろ…マクロ無しのエクセルで出来るじゃねぇか。 人手で修正を加える仕組みはあっても良いと思うけれど、そこは自動化しようよ。 ていうか漢字クロスワードならともかくカナ文字クロスワードだと候補数で死ねる。 問題生成の過程で手詰まりとか笑えないけどその方法だとそこも不味そう。 とりあえずマスの生成から単語の決定まで全自動で一通り埋めてから、 国語辞典で解説に目的単語を含まず一定字数以下で解説される単語と、 類義語対義語や英和辞書で単一に定まる単語は機械的にヒントを生成 (または最初からそういう単語群から選択する)位は出来ないと苦しい。
>>466 詰め将棋とかだったらわかるんだけど‥‥
世界一速い整数多倍長計算ライブラリを作れ
作った。
壊した。
477 :
デフォルトの名無しさん :2013/05/20(月) 23:42:45.07
>>434 #include <stdio.h>
#include <math.h>
int main(void) {
printf("%f", (1 + sqrt(17)) / 2);
return 0;
}
479 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/21(火) 00:39:15.43
お題:太くて赤い線で描かれた四角形の中に書かれたアラビア数字を読み取る。画像形式は自由
480 :
デフォルトの名無しさん :2013/05/21(火) 00:47:10.33
四角形は一つだけ。数字も一つだけ。四角形の四辺は画像の境界線に平行か垂直。数字は黒っぽい色。四角形と数字以外は明るい色。
片山の自演が始まります
お題:バーコードを作るプログラム
お題:モールス信号を解読するプログラム
484 :
デフォルトの名無しさん :2013/05/21(火) 18:47:01.93
さあ、どんどん解きやがれ
お題:QRコードを作るプログラム ほらQZ君、どんどん解答したまえ
>>485 より実用的なお題ですね。興味が湧けば、いや沸けば手をつけるかもしれません。
>>480 は必要だった時期もあったのですが‥‥
>>485 QZを作るプログラム
かと思っちゃったじゃないか!
どんなキチガイプログラムだよw
490 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/28(火) 13:03:32.08
age
>>489 srcだけいただいた
自分でビルドする
exeは何が仕込まれてるか分からないからな
それ使ってメルマガかなんかやってみれ
>>492 めんどい。これから逆汗作らないといけないので、時間が無い。
勝手にやってください。
一応お題が出ていたのか。気づかなかったw
>>491 srcにも何が仕込まれているかわからないよ。
>>495 srcだけじゃウィルス感染しない
最悪の場合ビルドもしなけりゃいいじゃん
srcからビルドする前にちゃんとどういう動作をするコードか、登場する関数ひとつひとつの細かい仕様まで調べてからビルドするんだぞ 何も考えずにビルドしちゃう人間に対しては、ソースがあるから安心なんてのは成立せんからなw
Makefileに悪意の処理を仕込むことって出来るかな
環境変数見てマイドキュメントの中身を消すくらいは余裕でできる
お題:マイドキュメントの中身を全部消すmakefileを作れ
all: sudo rm -rf /
504 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/05(水) 22:08:05.59
お題:アスキーアートの書き込みとそうでない書き込みを判別するプログラム。
505 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/10(月) 00:10:02.14
お題:明日の天気予報を表示するプログラム
506 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/10(月) 00:14:43.34
お題:世界中の暗号化されてない電子メールを収集するプログラム
中継サーバーを八苦するんか?
509 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/10(月) 00:46:33.56
お題:Facebookの公開情報をP2Pで共有するプログラム。 これができたら株価が心配です
510 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/10(月) 00:55:33.88
お題:地図上の落書きを共有できるサービス。
人感センサー照明のファームウェア
512 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/10(月) 01:01:49.92
お題:プリクラ公開処刑サービス 1.顔写真をUP 2.プリクラのようにみんなで写真を加工 3.ブログのようにみんなで感想が書き込める
プリクラの目を大きくするやつは難易度高いな。
お題:HaxeをC++に移植せよ
しました!
なんだ、もうできてたのか
信用してはいけないもの。 韓国人の、出来ます! チャイニーズの、出来ました! 日本人の、出来ません!
518 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/13(木) 02:39:13.32
お題:漢数字、半角数字、全角アラビア数字からなる、ある正の整数を表す文字列を半角数字の文字列に変換するプログラム。
519 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/13(木) 02:45:34.84
追記。元の文字列が正しく正の整数を表していないときは、失敗のメッセージを表示すること。
お題:clangが使える、C++11準拠のIDE QZどうした?! やる気なっしーか?
520がやればいいのではないでしょうか?
俺は今、逆アセンブラ作りに忙しいので、アイディアを忘れないように投入しているだけだ
お題:ある会社の現在の最新の株価を表示するプログラム ヒント:サーバー
最近あぼーん多いね
逆コンパイラはともかく、逆アセンブラってそこまで高難度なんだろうか。 ポインタ間接アクセスのプロシージャエントリポイントを的確に見つけるお仕事?
アイディアの意味を勘違いしてるだけでは?
お題:エラーになるか強制終了するまで小さい順に素数を表示し続けるプログラム。
>>528 多倍長計算にも限度がある。多倍長多倍長計算にも限度がある。理論的に限りなく計算を続けることはできるのだろうか?
>>529 限度がエラーって事になるだろうが、ストレージを記憶域にした多倍長計算が尽きるのは何時だろうな?
最低、対象値と一時変数とカウンタの3つがあれば良いとして、1.5TiBのHDDならlog10(2^(512*1024*1024*1024))桁
何桁なのかwolframalphaさんとgoogle先生に聞いたけど教えてくれなかった。
補題:log10(2**(512*1024*1024*1024))の整数部分を求めよ。
>>528 これやりたい
いつか、サーバーをひとつたてて素数を計算しつつwebで公開するんだ‥‥‥
>>531 2^39 * 0.3010 だろう?アクセサリの電卓は 165476499980.288 って言ってるよ
有効桁数が
補題:log10(2**(512*1024*1024*1024))桁までの素数を全て出力するのに必要な時間を求めよ。
>>528 maxima
p:2;
while true do p:next_prime(print(p));
番兵おけやボケェ
お題:Lispの (a b c) は (a . (b . (c . nil))) の省略記法である。前者から後者 へ変換せよ。
(defun f (x) (if (atom x) (format nil "~a" x) (format nil "(~a . ~a)" (f (car x)) (f (cdr x))))) (defun g () (princ (f (read))))
lispに食わせれば変換される 表示しろとは書いてない
お題:SSDウェアレベリング
>>540 記法について変換しろであって、解釈しろではないからダメなんじゃね
544 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/25(火) 22:04:10.92
お題:音声の波形データからテンポを求める
これができると、DMMに入社できるよ〜 お題:漫画風に揺れるオッパイを表示するプログラム
546 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/25(火) 23:02:55.93
お題:Windowsで動作する、UTF-8対応のコマンドプロンプト
解脱プログラム作成しました。西の国へ行けますか? #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { int i = 1; while (i <= 5670000000) { if ((i % 108) == 0 ){ NSLog(@"ループを抜けます i = %d", i); break; } NSLog(@"i = %d", i); i++; } return 0; }
片山をこのスレから追放するプログラム
調和級数の和が+∞に発散する事をプログラムで示せ
>>551 高校生の段階では発散をきちんと定義していないと記憶していたのだが‥‥
発散の定義は?
>>552 「数V"から"やり直せ」だからその先も含めて良いから数学的な定義拾ってこいってことだろ。
しかしそうなると定理証明エンジンの類を作るとか言う類の壮大な回答か、
もしくは単に自然言語を用いた証明を関数名とかに置き換えて書き出した
コンパイル時にtrue1個に最適化されるような類のアホみたいな回答になる。
こういうスレで適切なサイズのお題も考えらんない奴の出題だから突っ込むだけ野暮。
トンチの効いたおもしろ回答くらいしかすること無いよこの手の問題は。
>>553 いや、調和級数の発散性は題材としてもサイズとしても適切だとは思ってる(級数の発散性を調和数列と比較して、てのはよくやると思う)
ただ発散を計算で示すのにどうしようかとちょっと迷っただけで深い意味は、あーあー、ないです、「定義は?」っていうのはそのつもりはなかったんだけど煽りのようでちょっとまずかったね
‥‥ごめん
地味に難しいな +INFになっても、厳密に数学の意味での正の無限大とは違うしな
>>556 調和級数の発散速度はめちゃくちゃ遅い‥‥
やはり地味に調和級数よりも小さい級数が正の無限大に発散する事から証明するしかないのか
お題:m,nを正の整数とする。m/nと(m+1)/(n+1)が整数となるm,nの組を 100個求めよ。
>>559 n = 1とするとmは奇数であればすべて題意を満たす。
よって
print [(1,i*2+1) | i <- 1..100]
n,mが逆だね
お題:m,nを正の整数とする。m/nと(m+1)/(n+1)が整数となるm,nの組を 100個求めよ。 m=nでも成立してしまうので以下の条件を追加します。 1<n<m
n = 2とするとmは3以上の偶数かつ3で割って2余るもの(6の倍数+2)であれば題意を満たす。 よって print [(i*6+2,2) | i <- 1..100]
>>556 +INFて浮動小数点数なんだろうけど、丸め誤差がアホみたいに累積するし、
加算するときに指数の差が大きくなってくると情報落ちで値が増えなくなるし、
倍精度や四倍精度は2**-1074や2**-16494あたりで0に丸められてしまうし、
そもそも浮動小数点数の+INFは極限値ですら無くて値としての無限大だし。
問題を回避して大量に加算した所で限界値を超えました以外の結果は無い。
(((1<<54)-1)
>>52 )*2**1023を越えました的な意味の値になに求めてるのさ。
調和級数の和がXを超えるまで加算を続けろ、とか言う問題ではないのだし、
証明系を組むか、証明結果を翻訳してtrue返すか、ネタで返すかしないと…
お題 1+1の結果を求めよ
>>565 #include <stdio.h>
int main(void) {
int a, b, c;
a = b = 1;
c = a + b;
printf("1 + 1 = %d\n", c);
return 0;
}
くだらん 実に下らん。
そうか、それはよかった 実によかった
お腹急降下
おっぱいだけのときは「パイの実」。 キスがしたいときは「キスミント」。 さて、本番をしたいときは何でしょう?
「やらせろ」
お菓子の名前です わーかるっかなぁ?
「コメッコ」(関西風)
お題:20桁の10進数が与えられたとき、任意の10個の数字を消してできる 10桁の最大の数を求めよ。
>>575 #include <stdio.h>
#include <string.h>
void hoge(char *result, const char *str, int n){
int j, l, max;
l=strlen(str);
for(;n>0;n--){
max=0;
for(j=0;j<=l-n;j++){
if(str[max]<str[j]) max=j;
}
*result++=str[max];
str+=max+1;
l-=max+1;
}
*result='\0';
}
int main(void){
char result[10+1];
char data[]="12345678901234567890";
hoge(result, data, 10);
puts(result);
return 0;
}
お題:数学の問題を解くだけでなく、解く過程や説明も示してくれる数式処理ソフト
writeto("2ch");
579 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/11(木) 23:07:55.89
お題:適当なコマンドメニューを表示し、アルファベット文字列のコマンドの入力を入力補完(オートコンプリート)付きで受け付け、 入力されたコマンドを実行するコンソールプログラム。
お題:2ちゃんねるトリップを複数のPCの並列処理で解読するプログラム
お題:カメラの位置と、太陽系の全惑星の位置データを入力すると、太陽系を描画して画像を出力するプログラム。 惑星のテクスチャは各自用意。 描画する惑星の大きさは見やすさのため、あらかじめ指定した値で適当にデフォルメする。
585 :
デフォルトの名無しさん :2013/07/13(土) 00:00:23.96
惑星の明るさも調整する。準惑星も忘れずに。
久々に来たらコテが宿題をやってもらうスレになってた
>>587 てにをは、が不正確ですねさては半島出身?
>>588 は外してるけど上のコテだな
分かりやすすぎて逆にあやしい
Qがザパニーズなんじゃね
595 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/16(火) 18:46:20.93
お題:フィーチャーフォン(ガラケー)の世界共通の次世代OS&共通基盤。
void main(void) { init(); while (1) { in(); task(); out(); } }
597 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/16(火) 20:04:21.79
ガラケーが完全に死滅。漢字ROMと同じ失敗。 奴等はOSやドライバー、開発環境さえも共通化しなかった。合掌。
TRON使ってる時点で先は見えてる
解説しよう。昔のPCは、特殊なハードウェアの機能で漢字を表示できるようにしていた。これが漢字ROM。 計算機の進歩によりメモリー容量に余裕ができると、ソフトで漢字が表示できる。 そうすると特殊なハードが不要になり、低価格化し、設計における自由度が高まる。
対して、日本のITは閉鎖的で不統一で自由度の低い道をひた走ってきた。 シグマはその典型だった。 ドコモが絵文字を発表すると、他の会社が独自拡張を作る。絵文字の不統一問題は Unicodeで統一されるまで続いた。Shift_JISそのものにも似たような問題があったっけ?
その結果として、付加価値を求めるあまりに、汎用的であるべきOSが特殊化されすぎ、システムや基盤がバラバラになり、開発は高コスト体質に陥る。 分業・分割統治、規格統一、汎用化が進まないのがガラケーの末路。
>>600 当時のPCはパワーがないから、これはこれで仕方がない気がする。
計算機が発達すればするほど、物量と自由度が広がり、特殊化は汎用化に勝てなくなる。
例えば、ある携帯に時計を表示する機能を付けたいとき、汎用OSなら時計を表示するプログラムを用意すればいいが、 ガラケーの場合、時計を表示できるようにOSを改造しなければならない。 この辺の問題を解決できるような技術があればいいのだが
CPUとかバスとかその辺のアーキテクチャも汎用にしないとならないのではないだろうか
>>601 >日本のITは閉鎖的
それ、ITに限らず、日本の社会民族的体質だから。
行政はハコモノ。
製造業はハードに固執。ソフト(プログラマー)は虐げられ、軽視される。
民族的に、人間の存在性に関して肉体(ハード)に執着する国民性。精神(ソフト)は軽視。
飛行機事故とかでも異常に遺体回収に拘る。
西欧は宗教観的に精神性(魂)の方に重きを置くので、死人の遺体にあまり執着しない。肉体は精神の道具に過ぎない。老人の延命治療もあまりやらない。
だから、一時代的、一産業的問題ではないので、救いようはないと思うので、問題提起をするのは無駄なことだと思う。
どうやっても放っておいてもそういう方(箱に封じ込める習性)に走るから、日本は。毎度外圧に頼る他ない。
要するにガラケーが躍進するためには、品質管理の自動化・分業化と、プログラムの動的ロードを静的ロードにするようなLLVM的な技術が必要ということか。 それにしても組み込み屋はANSI Cもないような環境でよく開発するよな。
>>607 あれ?不思議だな
大和魂とかは消えたの?
「大和魂! と新聞屋が云う。大和魂! と掏摸が云う。大和魂が一躍して海を渡った。英国で大和魂の演説をする。ドイツで大和魂の芝居をする」
「大和魂はどんなものかと聞いたら、大和魂さと答えて行き過ぎた。五六間行ってからエヘンと云う声が聞こえた」
>>601 >Shift_JISそのものにも似たような問題があったっけ?
78JIS とか 83JIS とか、はしご高/くち高とか、コップの中の嵐をやっているうちに CJK 漢字統合でけりがつきましたとさ
>>608 基盤OSくらいは「さっさと」統一しろ!ってことだね自分から「ガラパゴス」とかいってるようじゃね
ソフトウェア分野では国内にどんな意味であれ一強がいないので話が進まない
SH社は自社販売にこだわりすぎてる。21世紀の販売方法じゃない。優れたフォントやソフト基盤などの資産が あるんなら、他社にも販売してもらって、利益を得る方法もある。IBMやGoogleから学ぶべき。
お題:MS-DOSエスケープシーケンスのエミュレータ
>>613 つ DOS-Box + ANSI.SYS
616 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/19(金) 20:43:43.71
お題:ひらがなで入力された計算式を計算してひらがなで結果を表示するプログラム。 例) 入力: いちたすいちは にです。
追記:Unicodeを使っても構わない。
お題:夏の海でJKをナンパするプログラムを作れ
お題:このスレッド内から有効なお題を抜き出してリスト化せよ。 *回答数が1以上あれば有効とする。 *リストのフォーマットは自由。
619追記: *文中に「お題:」が含まれていれば有効・無効の判定の対象とする。 *回答はお題へのレスアンカーがあれば判定の対象とする。
625 :
620 :2013/08/02(金) 08:03:47.75
その、なんだ、俺がわるかったよ・・・
お題:lsi-c 試用版のコード64kiBの制限を外せ
PCのメモリを64KBにする
製品版を使う
お題:100以下の自然数でふたつの素数の積で表せる数を昇順にすべて表示せよ。
632 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/11(日) 00:05:49.87
お題:URLを入力すると、そのWebページの見た目のイメージを出力するWebアプリ。
633 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/11(日) 00:39:23.85
お題:漢字1字を入力すると、書き順、読み、画数、部首を表示するプログラム
634 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/11(日) 00:52:02.94
お題:整数同士の掛け算の筆算の計算過程を表示するプログラム
あぼーんが進みすぎ
もうすぐお盆ですよ
おぼーん
どぼーん
639 :
デフォルトの名無しさん :2013/08/12(月) 22:12:26.67
>>632 Google Web Toolkitの非同期通信でサーバー側で画像取得しクライアントに返すし
>>633 Web辞書サイトを非同期でスクレイピングして独自DBだと言い張る
>>634 普通にコマンドパターンで計算過程を履歴にのこす
Java
>>639 なかなかやるではないか。褒めてつかわすぞぉ。
ただ、書き順を表すのは大変だったな。一画一画をそのまた 分解して、後は画像処理の領域計算。塗り潰しの動画作成なら シンプルだけどエッジがはっきりしないからな。
セクシーなコードを書け ただしエロ禁止
645 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/08/20(火) 17:50:33.35
お題:世界を救うスクリーンセーバーを作れ。
おお美しき君よ、我が家の晩飯をすくう飯屋となるのだ
変えないと
648 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/08/26(月) 14:09:27.90
片山博文MZパンクは片山博文MZコスモに転生しました。
>>630 Maxima
for i:2 thru 100 do if lsum(a[2],a,ifactors(i))=2 then print(i);
お題:81以下の自然数で九九に現れない数を昇順にすべて表示せよ。
>>650 #include <stdio.h>
int main(){
int i,j;
for(i=1;i<82;i++){
for(j=9;i%j;j--);
if(i/j>9)printf("%d ",i);
}
return 0;
}
>>651 素数判定モドキなんだからエラトステネスの篩モドキにしたらどうよ
>>653 試しに手でやってみたらわりとあっさり解が見つかった。
解はいっぱいあるということか。
×○×○×○
○××○○×
○×○××○
×○×○○×
○×○×○×
×○○××○
>>654 合ってるかどうか分からんけど 41844 個見つかった
656 :
655 :2013/09/07(土) 18:48:23.93
条件見落としてた 5868 個だった
657 :
655 :2013/09/07(土) 18:56:34.93
4140 個まで減ったwww
>>650 R
> (1:81)[-(1:9%o%1:9)]
[1] 11 13 17 19 22 23 26 29 31 33 34 37 38 39 41 43 44 46 47 50 51 52 53
[24] 55 57 58 59 60 61 62 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80
>>657 41844になるのは条件見落としすぎだろうと思ったけど、5868で止まりそうになった俺は人のこと言えなかった。
4140でOKかな?
661 :
660 :2013/09/08(日) 04:38:38.82
行候補ならびを得る/1 という定義が間違っていた。 書き直したから、興味ある人は見て下さい。
662 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/14(土) 23:39:54.97
お題:四則演算ができる逆ポーランド記法計算器を作れ
663 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/14(土) 23:57:30.25
お題:(a)有理数クラスと(b)区間演算クラスを作れ
664 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/15(日) 00:11:10.53
お題:テキストファイルを読み込み、その中で最もよく使われている単語ベスト3を表示するプログラム
665 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/15(日) 00:24:33.63
お題:座標で与えられた2つの三角形が相似かどうか判定するプログラム
666 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/15(日) 00:44:00.58
(画像処理・上級者向け) お題:ジグソーパズルを自動で解いて完成画像を出力するプログラム。 ばらばらのピースが写ったスキャナー画像(背景は単一色で、ピースの色と重複しない)が与えられる。
お題:n番目からn+10番目のフィボナッチ数の総和を求めよ。
>>667 訂正
お題:n番目からn+9番目のフィボナッチ数の総和を求めよ。
かくれんぼ
670 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/19(木) 21:03:53.31
お題:VB6からMySQLを使えるようにせよ。
この際、 お題:MySQLからVB6を使えるようにせよ。 にしてみたら?
どういうことだよwww
ストアドプロシージャとか構文解析を拡張するとかそのへん?
世界を救うスクリーンセーバーはまだか?
676 :
桃白白 :2013/09/23(月) 20:34:20.02
>>668 int fibonacciSum10(int n) {
int total = 0;
for (int i = 0; i < 10; i++) {
total += fibonacchi(n + i);
}
return total;
}
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 2) + fibonacci(n - 1);
}
679 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/25(水) 00:43:09.12
お題:あるソフトのバージョン情報をWeb上のテキストファイルに保存しておき、そのソフトが起動するたびに 非同期でそのテキストをHTTP接続で読み込み、バージョンアップの有無を確認できるような仕組みを作れ。 自分がよく使う言語で書くこと。
680 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/09/25(水) 00:59:11.51
お題:あるソフトがその使用準備において、乱数などを使ってその使用環境固有の登録キーを 生成する。登録キーはその環境では以後変更できないものとする。 その後、そのソフトは、登録キーをそのソフトに関係するサーバーに登録する。 サーバーは登録キーが登録されたら、その登録キーに対する照会に成功する。 登録キーに対する照会が成功しなければ、そのソフトは使用準備に留まり、運用することはできない。 このような仕組み(アクティベーション)を作れ。
プログラムとWeb開発が両方できないと、こういった仕組みは作れない。 Web開発はプログラミングではないという人も居るかも知れないが、 ソフトを構成する重要なシステムの一部だと考えれば、プログラマーとて無視はできない。
>>680 > 登録キーはその環境では以後変更できないものとする。
ド素人が自慢気に提案する絵に描いた餅の筆頭だよなそれ。
>>681 アクティベーションがWeb開発って
お前の通信はWebしかないのか
>使用環境固有の ここでもうひろみちゅせんせー辺りのセキュリティ啓蒙活動してる御仁たちががっくりと項垂れるレベルだよ 現在の技術では、ユーザ登録の動線を作る以外にはユーザと合意を取れる形で単一個有性を保証する方法はない、と皆考えて今のネットバンクの使いにくさとかがあるわけよ お前の要件は現実認識が甘すぎる世迷言だ iPhoneの指紋認識もその筋の人たちに早速突破されてたりと、なにかと忙しい世界だ お前はセキュリティ問題について物知り顔するのだけはやめといた方がいいと思う
すみません。また、お馬鹿トラップにはまってしまったと思い、反省してます。
>>668 Io
f:=method(n,a:=5 sqrt;11*(((1+a)/2)**(n+6)/a)round)
Io> f(1)
==> 143
Io> f(10)
==> 10857
何語よそれ
>>687 あんまメジャーではなさげだし検索にも掛かり難そうな名前だからしゃあないけど、
一行目にもプロンプトにもIoって書いてあるようにみえるんだが…
689 :
デフォルトの名無しさん :2013/09/26(木) 18:54:45.73
690 :
桃白白 ◆9Jro6YFwm650 :2013/09/29(日) 18:50:56.68
>>684 仮にCPUID/Processor-SerialNumberが生き残っていたとしたら、状況は変わったでしょうか?
宿題スレなんだから課題に文句言わずにとりあえず作ったれよw ちょっと難しいとなんだかんだ理屈つけてやらないんだから ダメ学生の巣窟だなここ
694 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/01(火) 07:20:25.68
(上級者向け) お題:GCCかLLVMを使ってVB6互換のコンパイラを作れ。
FORMはどうするの?
>>695 VB6に特化したリソースコンパイラを作る
>>694 gcc-2.6.3 や emacs/demacs を PC98-i386/go32 に移植した猛者がおられましたが、今から思い返してもつくづく偉業だったと思います。
今なら、C# が gcc に参画されたり、java に真の意味での参照渡しが拡張仕様として含ませることでしょうね。
とても手が届きませんが‥‥
お題:重複した文字のうち最初に現れた文字だけ削除する。 例 "Hello, world" -> "Hel, world"
static String removeFirstDeprecatedCharacter(String s) { Set<Character> appears = new HashSet<>(); Set<Character> deprecated = new HashSet<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (appears.contains(c)) { deprecated.add(c); } else { appears.add(c); } } char[] dest = new char[s.length() - deprecated.size()]; int j = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (deprecated.contains(c)) { deprecated.remove(c); } else { dest[j++] = c; } } return new String(dest); }
deprecated
これはむしろおいしい
>>700 #include <stdio.h>
int main(void){
char s[100];
int a[256];
fgets(s, 100, stdin);
for (int i = 0; s[i]; ++i)++a[s[i] + 0];
for (int i = 0; s[i]; ++i) {
if (a[s[i] + 0] < 2)printf("%c", s[i]);
a[s[i] + 0] = 0;
}
return 0;
}
最近のCって配列宣言したら0初期化とかされるんだっけ
int a[256]={0}; が必要か
>>704 文字列の左から2回サーチしているけど右からサーチすれば1回で…
いや、文字列逆転させないとならんか。聞き流して
>>705-706 グローバル変数だと強制的に初期化されて、
ローカル変数だと初期値があれば初期化される、だったような。
>>707 右から読んでもその文字が初出かどうか分からないような。
1パスで処理する(↓)ことも出来なくはないけどバッファが必要になるし、
バッファの最大長が条件によってほぼ入力長になるから実質2パスになる。
バッファ内での走査を許せばバッファ長はちょっと節約できるけど、雀の涙だしなぁ…
(function(input){
var output="",buffer="",chrdat={},i,c,b;
for(i=0;i<input.length;i++){
c=input.charCodeAt(i);
buffer+=input.charAt(i);
if(!chrdat[c]){chrdat[c]={ic:1,oc:0};continue;}
chrdat[c].ic++;
while(buffer.length && chrdat[b=buffer.charCodeAt(0)].ic>1){
chrdat[b].oc++;
if(chrdat[b].oc>1)output+=buffer.charAt(0);
buffer=buffer.slice(1);
}}
while(buffer.length){
chrdat[b=buffer.charCodeAt(0)].oc++;
if(chrdat[b].ic==1||chrdat[b].oc>1)output+=buffer.charAt(0);
buffer=buffer.slice(1);
}
return output;
})("Hello, world")//("Hello, world"+"Hello, world"+"Hello, world")
>>708 ×グローバル変数
△静的変数、static 変数とグローバルスコープを持つ変数
×ローカル変数
○動的変数、auto変数
>>700 Squeak Smalltalk で。
| str bag set |
str := 'Hello, world'.
bag := str asBag.
set := bag removeAllSuchThat: [:chr | (bag occurrencesOf: chr) = 1]; asSet.
^str inject: '' into: [:acc :chr |
acc, ((set includes: chr) ifTrue: [set remove: chr. ''] ifFalse: [chr asString])]
"=> 'Hel, world' "
>>700 どうしても"o"が消える理由がわからないのだけど。
712 :
711 :2013/10/08(火) 17:42:42.54
あ、わかりました。ごめんなさい。
713 :
711 :2013/10/09(水) 18:27:08.25
>>700 % Prolog
重複した文字のうち最初に現れた文字だけ削除する(_文字列,_重複した文字のうち最初に現れた文字だけ削除された文字列) :-
重複した文字のうち最初に現れた文字だけ削除する(_文字列,[],_重複した文字のうち最初に現れた文字だけ削除された文字列).
重複した文字のうち最初に現れた文字だけ削除する(_文字列,_既に削除対象となった文字列ならび,_重複した文字のうち最初に現れた文字だけ削除された文字列) :-
'重複した文字のうち最初に現れた文字の前方文字列・後方文字列'(_文字列,_削除対象文字列,_すでに削除対象となった文字列ならび,_前方文字列,_後方文字列),
重複した文字のうち最初に現れた文字だけ削除する(_後方文字列,[_削除対象文字列|_既に削除対象となった文字列ならび],_重複した文字のうち最初に現れた文字だけ削除された後方文字列),
atomic_list_concat([_前方文字列,_重複した文字のうち最初に現れた文字だけ削除された後方文字列],_重複した文字のうち最初に現れた文字だけ削除された文字列),!.
重複した文字のうち最初に現れた文字だけ削除する(_文字列,_,_文字列).
'重複した文字のうち最初に現れた文字の前方文字列・後方文字列'(_文字列,_削除対象文字列,_既に削除対象となった文字列ならび,_前方文字列,_後方文字列) :-
'文字列を検索し前方文字列・後方文字列を得る'(_文字列,_前方文字列,_削除対象文字列,_後方文字列),
\+(member(_削除対象文字列,_既に削除対象となった文字列ならび)),
sub_atom(_後方文字列,_,_,_,_削除対象文字列),!.
'文字列を検索し前方文字列・後方文字列を得る'(_文字列,_前方文字列,_対象文字列,_後方文字列) :-
sub_atom(_文字列,_開始位置,_,_残り長さ,_対象文字列),
sub_atom(_文字列,0,_開始位置,_,_前方文字列),
sub_atom(_文字列,_,_残り長さ,0,_後方文字列).
なんだこれw prolog知らんけど、他の知らん言語より読解不能に見えるのはなぜなんだろ 日本語がふんだんに使われているってのに、難解な契約書でも眺めてるようで気分がげんなりする
Prologって最初はフランス語の機械的処理を目的に作られたらしいな でもLISPとDBの両方の機能を持ち、しかもバックトラックが簡単に出来てしまうので 変な使い方をされるようになってしまった
COBOL 的に使えるね 標準的な処理系は何?
717 :
713 :2013/10/10(木) 06:28:08.61
>>713 は"_既に"であるべきところが一箇所"_すでに"になっていた。
% スケルトンだと以下の通り。
p_1(_1,_2) :-
p_2(_1,[],_2).
p_2(_1,_2,_3) :-
p_3(_1,_4,_2,_5,_6),
p_2(_6,[_4|_2],_7),
atomic_list_concat([_4,_7],_3),!.
p_2(_1,_,_1).
p_3(_1,_2,_3,_4,_5) :-
p_4(_1,_4,_2,_5),
\+(member(_2,_3)),
sub_atom(_5,_,_,_,_2),!.
p_4(_1,_2,_3,_4) :-
sub_atom(_1,_5,_,_6,_3),
sub_atom(_1,0,_5,_,_2),
sub_atom(_1,_,_6,0,_4).
>>716 Sicustus Prologというのが有名だが、多バイト文字系に難がある。
それで日本では、
SWI-Prolog や AZ-Prolog が好まれている。
仕様の小さい高水準言語として知られる SmallTalk,Scheme,Prologの中で、
Squeak SmallTalk が
>>710 に出てきたので、
それとの対照を主題にした
>>713 >>717 なのだが、どんなものだろう。
どんなものだろうとか言われても困るね。 Prologがどんなものか以前に、 そもそも読ませる気ゼロのコードだから こっちも読む気おきないし。
こうして見せてもらうと、PrologっていうのはJAVAというよりか COBOLに近い言語だね。骨格的に。
お遊びには最高の言語かもな GNU Prologがあるし誰でも使える
724 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/11(金) 19:43:59.75
お題:与えられたVisual Basicソースプログラム中のForやDo WhileやDo Loop WhileをDo Loopと Ifに変換し、Select CaseをIfに変換するプログラムを作れ(桃白白さんの発案)。
>>700 Io
f := method(s,
r := list
s foreach(v,r push(v asCharacter))
r select(i,v,(a:=s findSeq(v))!=i or s reverseFindSeq(v)==a)join
)
Io> f("Hello, word")
==> Hel, word
>>700 Haskell
f :: Eq a => [a] -> [a]
f = g []
g :: Eq a => [a] -> [a] -> [a]
g _ [] = []
g l (x:xs)
| x `notElem` l && x `elem` xs = g (x : l) xs
| otherwise = x : g l xs
>>700 R
f <- function(s){
a <- unlist(strsplit(s,""))
b <- table(a)
d <- names(b[b>1])
if(length(d)==0)return(s)
for(v in d){s <- s[-regexpr(v,s)])}
}
>>728 訂正
>>700 R
f <- function(s){
a <- unlist(strsplit(s,""))
b <- table(a)
d <- names(b[b>1])
if(length(d)==0)return(s)
i <- c()
for(v in d){i <- c(i,which(a==v)[1])}
paste(a[-i],collapse="")
}
お題:数字を3桁ごとにカンマ区切りでフォーマットした文字列をふたつ取り 合計を同じフォーマット文字列で返す。 例 "18,446,744,073,709,551,616" "1,099,511,627,776" ↓ "18,446,745,173,221,179,392"
>>730 求められているコードとは違うとわかっていながら、つい。^^;
Squeak Smalltalk
(('18,446,744,073,709,551,616' copyWithout: $,) + ('1,099,511,627,776' copyWithout: $,)
) asInteger asStringWithCommas "=> '18,446,745,173,221,179,392' "
>>730 Haskell
import Data.Function (on)
main = putStrLn $ foo "18,446,744,073,709,551,616" "1,099,511,627,776"
foo = f (+) 3 ',' ','
f o n c d s t = let (_, r) = foldr (h n c) (n, []) $ show $ (o `on` read . filter (/= d)) s t in r
h n d x (0, l) = (n - 1, x : d : l)
h _ _ x (m, l) = (m - 1, x : l)
733 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/14(月) 19:55:26.43
お題:再帰を使わずにハノイの塔を解くプログラム。
>>733 3つの塔ABC間での移動に番号を付けて
A<->B=6,A<->C=5,B<->C=3とする。
あとは6,5,3の繰り返し。
735 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/14(月) 23:55:46.88
お題:次の条件を満たす、なるべく高速で汎用的な字句解析器生成器を作れ。 i. 静的に格納された関数ポインタを含む木構造データに基づいて解析する。 ii. 状態によって解析方法を変更できる。 iii. 空白を無視するフラグがある。 iv. 1から始まる行番号を保持するオプションがある。
そういえば CodeIQ というのがあるようだけれども「就活/転活する気のないやつは出すな」とか身勝手な注文をつけるとは、馬鹿なサイトだねえ これだったら、かつてのCマガのアレの方が遥かにましだね
>なるべく高速で汎用的な こんな指示が上から降ってきたら俺はその職場全力で逃げ出したい
>>737 もしくは、ただちにその上司を槍で突くかだな。
「なるべく高速で汎用的な」は、撤回する。まぁ、作るのを楽しんでくれれば嬉しい。
>>740 そういう場合は「望ましい」という都合の良い官僚的ビジネス文書表現があるよね。
「高速で汎用的であればなお望ましい」
ってね。
お題:辺の長さが63の正三角形を辺の長さがすべて異なる整数値をもつ三角形3個に分割する。
744 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/24(木) 19:42:07.45
お題:スクリーンセーバーと管理サーバーにより、大規模計算ができるボットネットを構築し、 世界を救うビジネスを開始せよ。スクリーンセーバーの対応OSはWindows/iOS/Androidとする。
追記:スクリーンセーバーが作動しているときに広告を表示し、広告収入を稼ぐこと。
スクリーンセーバーとか嫌だな サイトに埋め込んで閲覧者のリソースの一部を借りるライブラリの方が面白い
>>744 まずスマホでスクリーンセーバーってなんだよ
まさかとは思うがスクリーンオフ時にぶん回せとでも?
バッテリー死亡フラグですな。
スクリーンセーバは仕事場にあって遊びが許される場だからね xscreensaver が Windows に移植されるとうれしいのだが
だからってスマホで許されるわけじゃないだろうに。
やるんならせめてP2Pのファイル共有ソフトとかにしておいて欲しいわ。
P2Pもそろそろ新しいのがほしい、機能としては winny3 としてセキュリティ面だけ強化したのでいい キャッシュは秘密分散にしたいものだ 秘密分散(電子割符)についてはガードが固いようでggっても具体的なアルゴリズムがわからない‥‥
>>753 暗号利用モードをCBCにしてバイト単位でストライピングすりゃよくね?
全てのブロックが別のブロック(のうちよりオフセットが小さい部分)に依存するから、
全部が揃わないと復元不能になるっていう条件は満たせるはず。
消失対策はストライピングした分割ブロックに対してエラー訂正掛けておけばOK。
分割数が少ないうちはRAID5/6みたいなパリティ方式で復元すればいいし、
分割数が多くなってきたら普通のエラー訂正符号に切り替えればよい。
>>754 >CBC
しかし、最初からある位置まで全部そろえば、そこまでは見えるわけだね
>消失対策
RAID5/6 はよく理解できるが、現在の秘密分散技術は、分割数と冗長度を独立に設定できるみたいだ、どんなアルゴリズムなんだ?
>>755 > しかし、最初からある位置まで全部そろえば
且つ、暗号鍵が有ればな。だが、それでは所詮ストライピング一周目すら周りきれないし、
古典的手法に逆戻りしてる感はあるが最初に全ストライプ一周分ランダムデータでパディングしとけば回避できる。
厳密にはCBCだけじゃなくて鍵スケジューリングも考察すべきかも知れんが詳しくは設計時に考えれ。
> 分割数と冗長度を独立に設定できる
訂正、754の下2行は分割数じゃなくてパリティ数(冗長度)だな。
ストライプ数(内部的分割数)+パリティ数(冗長度)=ノード数(外観的分割数)
パリティ数増えたら面倒くさいから誤り訂正符号使ってもよいと思うけど、
消滅ビットは確定できるから、軟判定復号で設計するのが正しい筈。
誤り訂正符号や軟判定復号は無線通信関連で資料があるはずだよ。
757 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/29(火) 11:56:01.41
>>757 おお!thx! thx! とってもうれしいです
>>756 きちんと符号論をおっかけないといけないみたいですね、ガロアとか聞くだけで敬遠してましたが‥‥やるしかないか
760 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/31(木) 16:29:32.41
761 :
デフォルトの名無しさん :2013/11/01(金) 15:26:43.54
age
お題: map reduce を使って、複数の集合の積集合を求める ググってみたんだけど、どうにも丁度いいものがなくて。 知恵を貸して。
map reduce って GoogleのMapReduce ? たんに map と reduce ?
実際に使うのはRiakになるかもしれないから、mapとreduceを使ったアルゴリズムが分かれば、何でもいいです
>>762 Io
Io> d:=list(list(1,2,3),list(2,3,4,5),list(1,2,3,4,5))
==> list(list(1, 2, 3), list(2, 3, 4, 5), list(1, 2, 3, 4, 5))
Io> d reduce(a,b,a intersect(b))
==> list(2, 3)
お題:ときどき答が違う足し算。
767 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/02(土) 20:20:53.60
>>766 int f(int a, int b)
{
if (rand() % 4 == 3) a++;
return a + b;
}
>>766 特定の値のときだけ違う答えにするんじゃだめなのか?
769 :
デフォルトの名無しさん :2013/11/02(土) 22:29:17.47
>>768 では、素数の時だけ違う答えにしてください。
素数かどうかの判定関数を提供してくれればすぐできるね
>>765 reduceの使い方を勘違いしてた
さんくす
ちなみにそれなんて言語?lisp?
>>771 なんか前にも言語聞いてる奴居なかったか?
「
>>762 【Io】」
「【Io】> d:=list(list(1,2,3),list(2,3,4,5),list(1,2,3,4,5))」
>>772 おおっ、知らない言語だった
ありがとう
774 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/04(月) 12:11:12.05
お題:データが昇順にソート済みか判定する。
>>776 Prolog
データが昇順にソート済みか判定する(_データ) :-
forall(append(_,[A,B|_],_データ),A @=< B).
778 :
デフォルトの名無しさん :2013/11/06(水) 00:13:45.12
お題:ideone.comに侵入して「hacked by 」と表示させよ(はあなたのハンドル名)。 ただし、サービスを停止させてはならない。
>>776 Squeak Smalltalk
#(3 4 2 1) isSorted "=> false "
#(1 2 3 4) isSorted "=> true "
わかっちゃいるんだが、ついね。つい^^;
でもデフォルトで用意されているから、あえて使わないのもどうかと。
>>776 Haskell
import Data.List
import System.Random
main = do
gen <- getStdGen
let l = take 10000 $ randomRs (1, 100000) gen :: []
print $ check l
print $ check $ quickSort l
isSorted :: Ord a => [a] -> Bool
isSorted xs = and $ zipWith (<=) xs (tail xs)
quickSort :: (Ord a, Eq a) => [a] -> [a]
quickSort = qsort []
where
qsort r [] = r
qsort r [x] = x : r
qsort r (x:xs) = qsort' r x xs [] []
qsort' r p [] lt ge = qsort (p : qsort r ge) lt
qsort' r p (x:xs) lt ge
| x < p = qsort' r p xs (x : lt) ge
| otherwise = qsort' r p xs lt (x : ge)
781 :
780 :2013/11/06(水) 08:20:50.67
訂正 print $ isSorted l print $ isSorted $ quickSort l
782 :
780 :2013/11/06(水) 08:24:20.77
:: []にInt入れるの忘れてた
783 :
デフォルトの名無しさん :2013/11/07(木) 02:10:13.26
お題: 1.画面の中央に「あなたのパソコンを破壊しています」と書かれた黒い箱を五秒間表示する。 2.十秒間、画面のあちこちにウイルスを連想させるものを次々と表示する。 3.約一分間、閉じることができないウィンドウで嘘の進捗状況を「何%破壊完了しました」と表示する。 以上の動作を順番に最小コードで再現せよ。
改造して本物作る気だな。
刑法第168条の2と3は作成指示した方も適用されるんだっけ?
FillRect TextOut BitBlt WM_CLOSE SetWindowText
>>776 JavaScript(ES6)
arr = [1,2,3,4]
arr.every((v,i,a)=>i?a[i-1]<v:1) //true
>>786 ポータブルじゃない上に最小コードじゃない。やりなおし。
789 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/08(金) 10:22:12.03
お題:
Arc
http://msdn.microsoft.com/ja-jp/library/cc428303.aspx?ppud=4 XDrawArc
http://xjman.dsl.gr.jp/man/man3/XDrawArc.3x.html を参考に、次の【1】【2】【3】【4】に当てはまる式を書きなさい。
int XDrawArc(Display *dpy, Drawable d, GC gc,
int x, int y, unsigned int width, unsigned int height,
int angle1, int angle2)
{
; ; XGCValues *values;
; ; HPEN hPen;
; ; HGDIOBJ hPenOld;
; ; int xStartArc, yStartArc, xEndArc, yEndArc;
; ; ...(省略)...
; ; xStartArc = 【1】;
; ; yStartArc = 【2】;
; ; xEndArc = 【3】;
; ; yEndArc = 【4】;
; ; hPenOld = SelectObject(dpy, hPen);
; ; Arc(dpy, x, y, x + width, y + height, xStartArc, yStartArc, xEndArc, yEndArc);
; ; SelectObject(dpy, hPenOld);
; ; DeleteObject(hPen);
; ; return 0;
}
三角関数の使い方を忘れたからって他人に丸投げかいw 象限区切って考えたり面倒なんだからてめぇでやれよ。
ヒント! template<class T> Vector2<T> TransForm(Vector2<T>& Length, double RotRadian, Vector2<T>& Scale, Vector2<T>& Move) { Vector2<T> Ret = { 0, }; double Sin = std::sin(RotRadian); double Cos = std::cos(RotRadian); Ret.x = ((Length.x * Scale.x) * Cos) - ((Length.y * Scale.y) * Sin) + Move.x; Ret.y = ((Length.x * Scale.x) * Sin) + ((Length.y * Scale.y) * Cos) + Move.y; return Ret; }
はわわわわ・・・。
はわわわろたw
マルチですし。お寿司。
自己解決 GitHub見ろ
知らないっすよ。
お題:値が整数のn個の数列がある。隣同士の項の和の数列をつくる。 この操作を繰り返して項が1個になったらその値を返す。 例 31,41,59,2 -> 333
31,41,59,2 →(31+41),(41+59),(59+2) →(31+41+41+59),(41+59+59+2) →(31+41+41+59+41+59+59+2) 三角数と初めの数列の長さに関係してる。数学問題だな
いや、これはピラミッド占いだ
破壊的計算で int pu(int n, int *p) { for (; n > 1; n--) { for (int i = 0; i < n - 1; i--) p[i] += p[i+1]; } return *p; }
>>798 Haskell
main = print $ pyramid [31,41,59,2]
pyramid = last . takeWhile (not . null) . iterate (zipWith (+) =<< tail)
>>797 Prolog
'値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'([_1個になったらその値],_1個になったらその値) :- !
.
'値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'(_値が整数の数列,_1個になったらその値) :-
findall(_隣同士の項の和,(
append(_,[_項_1,_項_2|_],_値が整数の数列),
_隣同士の項の和 is _項_1 + _項_2),
_隣同士の項の和の数列),
'値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'(_隣同士の項の和の数列,_1個になったらその
値).
803 :
802 :2013/11/09(土) 06:27:27.90
>>802 最後の最後で改行を削り損ねた。残念。最後の二行は、本当は以下の一行。
'値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'(_隣同士の項の和の数列,_1個になったらその値).
804 :
802 :2013/11/09(土) 07:28:05.53
% Prolog さらに具合の悪い点があり、書き直し。 '値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'([_1個になったらその値],_1個になったらその値) :- !. '値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'(_値が整数の数列,_1個になったらその値) :- \+(_値が整数の数列 = []), findall(_隣同士の項の和,( append(_,[_項_1,_項_2|_],_値が整数の数列), _隣同士の項の和 is _項_1 + _項_2), _隣同士の項の和の数列), '値が整数のn個の数列がある。隣同士の項の和の数列をつくる。この操作を繰り返して項が1個になったらその値を返す。'(_隣同士の項の和の数列,_1個になったらその値). % 何が具合が悪かったかというと、定義第二節の第一引数に[]が来た時、 % findall/3は偽にならない。_隣同士の項の和の数列 は再び[]になる。 % つまり、再帰が停止しなくなる。
>>800 i--じゃなくてi++だった
int pu(int n, int *p) {
for (; n > 1; n--) {
for (int i = 0; i < n - 1; i++) p[i] += p[i+1];
} return *p; }
>>797 Io
f := method(a,
b := a size - 1
a map(i, v, b combinations(i) * v) sum
)
Io> f(list(31,41,59,2))
==> 333
>>797 Squeak Smalltalk
| array |
array := #(31 41 59 2).
[(array := array overlappingPairsCollect: #+) size = 1] whileFalse.
^array first "=> 333 "
>>797 Maxima
f(a):=(b:length(a)-1,thru b do a:rest(a)+rest(a,-1),a[1]);
(%i37) f([11,22,33]);
(%o37) 88
>>797 J
(}.+}:)^:(<:@#) 1 2 3 4 5 6 7 8 9
1280
812 :
811 :2013/11/09(土) 16:24:37.17
バグってた・・・。 11行目>>for (std::size_t j = 0; j < In[i+1].size();j++){ 俺もマダマダですなー。
ちゃんと再帰でやるんならこんな感じか function pu(a) { if (a.length == 1) return a[0] var b = [] a.reduce(function (l,r){ b.push(l+r); return r }) return pu(b) } pu([31, 41, 59, 2]) //333
>>814 C系列だと簡単にスタック潰しそう。ひぃ〜。
>>801 zipWithを正格評価にするとちょっとだけ速くなった気がしました
main :: IO ()
main = print $ pyramid [1..5000]
pyramid :: [Integer] -> Integer
pyramid = head . last . takeWhile (not . null) . iterate (zipWith' (+) =<< tail)
zipWith' :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith' f (a:as) (b:bs) = cons' (f a b) (zipWith' f as bs)
where
cons' :: a -> [a] -> [a]
cons' h t = h `seq` t `seq` h : t
zipWith' _ _ _ = []
>>815 末尾呼び出しだからコンパイラがまともならループに最適化される
こうか function pu(a) { while (a.length > 1) { var b = [] a.reduce(function (l,r){ b.push(l+r); return r }) a = b } return a[0] }
>>797 R
f <- function(a){
b <- length(a) - 1
sum(choose(b, 0:b) * a)
}
>>797 common lisp
(defun pira (x)
(if (equal (length x) 1)
(car x)
(pira (mapcar #'+ (cdr x) (butlast x)))))
(pira '(31 41 59 2)) -> 333
しかしこのスレ、マイナー言語多いねw
JとかIoとか使っている人、初めてみた。
822 :
802 :2013/11/09(土) 21:33:21.98
>>821 以前「いろんな言語で宿題」というスレがあったが、
あそこには、初めて見る言語が沢山並んでいた。
>>822 prolog 屋さんのが多かった気があれ?
824 :
802 :2013/11/09(土) 22:38:48.45
>>823 7割くらいはPrologだったが、残り3割の内三分の一がJ言語で
その他が面白かった。数学系のスクリプト言語のようなものが
多かったように思う。
>>797 D言語で。
rdmd -unittest -main -debug a.d
int func(int[]a) {
auto n=a.length;
while(n--)
for(int i=0; i<n; ++i)
a[i]+=a[i+1];
debug writeln(a);
return a[0];
}
unittest {
assert(func([31 ,41, 59, 2])==333);
}
お題: 入力 AND 出力 DDDDD DNNND DNAND DNNND DDDDD
>>826 C++
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
using namespace std;
string s;
getline(cin, s);
const int L = s.length();
for (int i = -(L - 1); i <= L - 1; ++i) {
for (int j = -(L - 1); j <= L - 1; ++j) {
cout << s[max(abs(i), abs(j))];
}
cout << endl;
}
}
>>826 python3
a = []
for c in 'AND':
s = c * len(a)
a = list(map(lambda x:c+x+c, [s]+a+[s])) if a else [c]
print('\n'.join(a))
>>826 ES6
func = s => [...s.slice(1)].reduce(
(a,v,i) => [v.repeat(i*2+3), ...a.map(t=>v+t+v), v.repeat(i*2+3)], [s[0]]
).join('\n')
func('AND')
入力が1文字や0文字の時も対応出来てるか?
>>826 Haskell
main = putStrLn $ f "AND"
f [] = []
f (x:xs) = unlines $ map h $ h $ g x xs
where h = (++) =<< (reverse . tail)
g x [] = [[x]]
g x xs@(y:ys) = (x : xs) : map ((:) =<< head) (g y ys)
833 :
832 :2013/11/10(日) 17:21:42.17
>>826 Haskell
修正
main = putStrLn $ f "AND"
f [] = []
f xs = unlines $ map h $ h $ g xs
where
h = (++) =<< (reverse . tail)
g [y] = [[y]]
g yys@(_:ys) = yys : map ((:) =<< head) (g ys)
constとflipと(>>=)でチューリング完全か
>>826 Squeak Smalltalk
| str arr |
str := 'ABCD'.
str size < 2 ifTrue: [^str].
arr := {str first: 1}.
str allButFirstDo: [:chr |
| arr0 |
arr0 := {String new: arr size withAll: chr}.
arr := arr0, arr, arr0 collect: [:each | '', chr, each, chr]].
^arr asStringWithCr
>>826 J
({~ [:>./~|@i:@<:@#)'AND'
DDDDD
DNNND
DNAND
DNNND
DDDDD
837 :
802 :2013/11/11(月) 13:01:07.59
いつも遅いってとこからも相当書きづらい言語なのが分かる。
Jインストールした
やっぱアンインストールした
({~ [:>./~|@i:@<:@#)'AND' input =: 'AND' a =: |@i:@<:@#)'AND' = 2 1 0 1 2 index =: >./~ a = 2 2 2 2 2 2 1 1 1 2 2 1 0 1 2 2 1 1 1 2 2 2 2 2 2 index { input = DDDDD DNNND DNAND DNNND DDDDD やっとわかった
お題 文字列の入力を受け付けて文字のビットマップを8x8の■□で表現 例「AB」 □□□■■□□□ □□■□□■□□ □□■□□■□□ □■■■■■■□ □■□□□□■□ □■□□□□■□ ■□□□□□□■ ■□□□□□□■ □■■■■■□□ □■□□□□■□ □■□□□□■□ □■■■■■□□ □■□□□□■□ □■□□□□■□ □■□□□□■□ □■■■■■□□
banner
ちがう物に見えた
>>844 教授からの三つの忠告
ある大学の講義で教授の話を聞かずにしゃべっていた女子学生に教授がこんな質問をする。
「人の器官のうち、ある条件下で大きさが六倍になるのはどこでしょうか?また、六倍になる条件は?」
指名された女子学生が顔を赤くして「これはセクハラです。後で大学に報告します」と答えると、教授はこう返した。
「正解は瞳孔です。あなたに三つの忠告があります。まず、講義を真面目に聞きなさい。
二つ目は、あなたの心は汚れています。
最後に、本当に六倍になると思っているなら、あなたはきっと、がっかりする日が来るでしょう」。
お題: 例:数列[3,1,-7,-1,5]について、 ->[4,-3,-2,3] (累計) ->12 (絶対値の合計) のように計算する。 最初の数列の並び順を変えると、最後の合計計も変わる。 任意数列について、上記合計が最小になるように並び替える関数を作成。
>>846 瞳孔についての説明をするのに合理的な理由があれば忠告の前二つはセーフだけど、三つ目は微妙だよな・・・
というかイマドキ、特に授業中くっちゃべってるDQN組みにおいて、がっかりする日が来てない女子大学生って貴重なんじゃね。
>>847 >->[4,-3,-2,3] (累計)
三番目は -4, したがって四番目は +1 では?
850 :
847 :2013/11/12(火) 07:47:51.87
>>849 確かにそうですね、訂正します。
[3,1,-7,-1,5]
-->[4,-3,-4,1]
-->12
>>847 @Mathematica
AccumlateAbsTotalMin[lst_]:=Module[{x,xmin},
(* Analysis *)
x=lst//
Permutations[#,{Length[#]}]&//
Map[{#,Drop[Accumulate[#],1]}&,#]&//
Map[{#[[1]],Total[Map[Abs,#[[2]]]]}&,#]&;
xmin=x//
Map[#[[2]]&,#]&//
Min;
(* Results *)
Select[x,#[[2]]==xmin&]//
Map[#[[1]]&,#]&
];
結果:
In := AccumlateAbsTotalMin[{3,1,-7,-1,5}]
Out = {{-7, 5, 3, -1, 1}, {5, -7, 3, -1, 1}}
>>847 JavaScript
perm = (a,b=[],c=[]) => {
if(a.length == 0) c.push(b)
for(let i of a.keys()) {
let A = [...a], B = [...b, A.splice(i,1)[0]]
perm(A,B,c)
}
return c
}
cal = a => {
let b = []
a.reduce((l,r,i) => b[i-1] = l+r)
return b.reduce((l,r) => Math.abs(l)+Math.abs(r))
}
func = a => perm(a).sort((x,y) => cal(x)-cal(y))[0]
func([3, 1, -7, -1, 5]) //[-7, 5, 3, -1, 1]
>>842 8pxは出来なかったけど10pxなら
JavaScript
function toBitMap(str, size) {
var bitmap = ''
for (var i = 0; i < str.length; ++i) {
var canvas = document.createElement('canvas')
var ctx = canvas.getContext('2d')
ctx.font = size + 'px'
ctx.textBaseline = 'top'
ctx.fillText(str[i], 0, 0)
var data = ctx.getImageData(0, 0, size, size).data
for (var j = 0; j < size * size; ++j) {
bitmap += data[j*4+3] < 100 ? '□' : '■';
if (j%size == size-1) bitmap += '\n'
}
}
return bitmap
}
alert(toBitMap(prompt('str?'), 10))
訂正 ブラウザの最小フォントサイズ設定を8px以下にすればこれでいける function toBitMap(str, size) { var bitmap = '' for (var i = 0; i < str.length; ++i) { var canvas = document.createElement('canvas') var ctx = canvas.getContext('2d') ctx.font = size + 'px sans-serif' ctx.textBaseline = 'top' ctx.fillText(str[i], 0, 0) var data = ctx.getImageData(0, 0, size, size).data for (var j = 0; j < size * size; ++j) { bitmap += data[j*4+3] < 128 ? '□' : '■'; if (j%size == size-1) bitmap += '\n' } } return bitmap } alert(toBitMap(prompt('str?'), 8))
>>847 Squeak Smalltalk
| incAbsSum findMinSeqOf |
incAbsSum := [:xs | | acc | acc := 0. (xs collect: [:x | acc := acc + x]) allButFirst abs sum].
findMinSeqOf := [:xs :fun |
| min results |
min := Float infinity.
results := OrderedCollection new.
xs permutationsDo: [:arr |
| sum |
sum := incAbsSum value: arr.
min = sum ifTrue: [results add: arr copy].
min > sum ifTrue: [min := sum. results removeAll; add: arr copy]].
results asArray].
findMinSeqOf value: #(3 1 -7 -1 5) value: incAbsSum "=> #(#(-7 5 3 -1 1) #(5 -7 3 -1 1)) "
856 :
847 :2013/11/12(火) 13:25:55.12
>>847 # Ruby
a=[3,1,-7,-1,5]
r=[]
sum=0
r << a.sort!.shift
while a!=[] do
if((sum+=r.last)<0)
r << a[-1]
a=a[0...a.size-1]
else
r << a.shift
end
end
p r
#[-7, 5, 3, -1, 1]
857 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/12(火) 17:46:40.66
>>858 [...a]で配列aをシャローコピーして使ってるから破壊されない
>>847 J
f =: 3 :0
a =. (i.!#y)A.y
b =. +/"1|}."1+/\"1 a
(I.(<./b)=b){a
)
f 3 1 _7 _1 5
_7 5 3 _1 1
5 _7 3 _1 1
お題:たとえば整数20010307なら21370000のように0を右側に寄せ集めた整数を返す。
>>861 Squeak Smalltalk
(20010307 asString reversed inject: '' into: [:acc :chr |
chr = $0 ifTrue: ['0', acc] ifFalse: [acc, chr]
]) reversed asInteger "=> 21370000 "
>>861 @Mathematica
zeroToRight[n_]:=n//
IntegerDigits//
{Select[#,#!=0&],Select[#,#==0&]}&//
Apply[Join,#]&//
FromDigits;
結果:
In := zeroToRight[20010307]
Out = 21370000
スクリプトは仕事が短いね。 除算と文字列変換ってどっちが早いんだろうなー。
>>863 Squeak Smalltalk 別解
(20010307 asString sort: [:a :b | a ~= $0]) asInteger "=> 21370000 "
い、一行ですか・・・。うほい。
#include <stdio.h> int int861(int org) { int nonzero = 0, l = 1, r = 1; int i, j; for (i = org; i != 0; i /= 10) { j = i % 10; if (j == 0) { r *= 10; } else { nonzero += j * l; l *= 10; } } return nonzero * r; } int main() { int value = 20010307; printf("%d %d\n", value, int861(value)); value *= -1; printf("%d %d\n", value, int861(value)); return 0; }
func = num => { let str = ['',''] for (chr of ''+num) str[+!+chr] += chr return +str.join('') } func(20010307) //21370000
>>865 > 除算と文字列変換ってどっちが早いんだろうなー。
Squeak Smalltalk では文字列変換だと与える数値にもよりますが
除算の方法に比べて3倍〜5倍くらい遅いですね。
| fn1 fn2 |
fn1 := [:int |
| nonZeros numZeros numDigits |
nonZeros := 0.
numZeros := 0.
numDigits := 0.
[int > 0] whileTrue: [
| digit |
digit := int \\ 10.
numDigits := numDigits + 1.
digit = 0
ifTrue: [numZeros := numZeros + 1]
ifFalse: [nonZeros := digit * (10 raisedTo: numDigits - numZeros) + nonZeros].
int := int // 10].
nonZeros * (10 raisedTo: numZeros)].
fn2 := [:int | (int asString sort: [:a :b | a ~= $0]) asInteger].
{fn1. fn2} collect: [:fn | [1e5 timesRepeat: [fn value: 20010307]] timeToRun] "=> #(703 3564) "
>>866 をヒントに JavaScript
+[...''+20010307].sort(a=>1-a).join('') //21370000
>>870 検証ありがとう。その結果はなんの単位?ミリセック?チック?
両方書いといてその短さですか。たまらんね。
相変わらず、アルゴリズムわかってないと読めんわ。
俺、素養無いな〜〜。
>>871 これはまた短いね〜。
>>872 10万回繰り返しての計測で、単位はミリ秒です。
>>871 は1000msくらい
でもPentiumだから最近のCPUなら大体3倍くらい速いはず
計測したのはこれね Firefox28 var f=n=>+[...''+n].sort(a=>1-a).join('') for(var i = 0; i < 10000; ++i) f(20010307)
0が足りなかった…
var f=function(n){return +(''+n).split('').sort(function(a){return 1-a}).join('')} for(var i = 0; i < 100000; ++i) f(20010307) これだと色んブラウザで動いてChromeで1800msか
ぺんちあむとはなかなか玄人ですなー。 俺も開発だけならぺんちあむで開発したい。 タコなんで止まってくれないとバグが分からない。
何でもいいが私用で使うには最低4スレッドはないとキツイな
うちはCore2Duoです〜。 スカイレークまで持たせたい。
>>861 common lisp
(defun zero-push (x) (let ((s (princ-to-string x)))
(labels ((zc (n m) (equal m #\0))) (parse-integer (sort s #'zc)))))
(zero-push 20010307) => 21370000
整数の大きさに特に指定がない場合、処理系によっては オーバーフローしたり、丸められたりするので、文字列で 処理する方がいいのかも
>>861 C++
http://ideone.com/fTdZs1 #include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
for (string s; cin >> s; ) {
std::stable_partition(s.begin(), s.end(), [](char ch) { return ch != '0'; });
cout << s << endl;
}
}
>>861 Clojure
(->> 20010307 str (sort #(= %2 \0)) (apply str) read-string println)
887 :
886 :2013/11/16(土) 01:39:22.48
>>881 これすげー。かなわんなー。
俺、ダメすぎるぜ。
>>882 自分の環境(SBCL 1.1.13.debian)だと37120000になる。
>>890 これはかなわんなー。はえー。
さすがC言語だ。久しぶりに恐ろしい片鱗を味わったわ。
しかし、俺ってC書きとしては速度が遅くて、C++書きとしては効率が悪い。
良く言えば器用貧乏だが、いやー一発殴られた気分だ。
刺激になる〜〜。
>>893 いや22行目の k /= 10; が気色悪い。
どうにかならんだろうか。眠いのでおやすみ
気色悪いって言うけど、定数の除算は乗算に置き換えられるから速度的には不利じゃないよ。 どうしてもってことなら、27行目の直前に移動すれば33行目の除算をなくせるけどね。
>>883 そうですね。たとえば 100! を与えた場合などは
>>870 の結果は逆転し
多倍長精度演算のコストのため、除算の方が文字列変換より5〜6倍遅くなります。
>>984 デバッガ眺めてたら、1を10で乗算していくわけなんだが、1を10の8乗すると9桁になる。
ほしいのは1の10の7乗で本題の数字と同じ桁数。
やり方はいくらでもあるけど、綺麗に書くとか意向に沿って修正になるとなかなか手がないね。
とりあえず一行削った。んだけど、なんか遅くなったなぁ・・・。誤差でいい?Orz
http://ideone.com/Ra6nKR 上記と同じ理由で、INTMAXは10桁いけるけど、kがひとけた多く乗算されるので桁あふれする。
桁あふれといえば、最初から多倍長整数のことを特に意識して書かずとも 100!とかでもそのままのコードで動かせて、ちゃんと正しい答えを返してくるところが 動的型言語のお手軽でいいところですね。
899 :
890 :2013/11/16(土) 04:35:45.05
>>895 >>897 アドバイスありがとうございます。
>>890 のソースを見直していたのですが、桁あふれの箇所がありましたね。
2つ。
f(int d); は、d が 1000000000 を越える場合
20行目の k *= 10; で31bit桁あふれが起きていました
(なぜ 1020304050 が計算できたのか)。
あと2000000020→2200000000も2147483647を越えるのに
チェックしていない不具合を抱えていました。
それらをチェックするようにしました。
http://ideone.com/b0JZ3R コンパイルオプションも先ほどは-O2だったのを-O0にして、最適化せずに実行した結果
20010307→21370000を10万回 〜 22.708200ms
1020304050→1234500000を10万回 〜 27.541900ms
になりました。
>>898 そうそう。動的言語ってどんな処理しても平均的に早いから巨数扱うときとかは羨ましい。
>>870 の Squeak Smalltalk ですが、
100!だと10万回は大変なので30!(= 265252859812191058636308480000000)で
JIT入りのVM(CogVM)で計り直してみたところ、除算版 13.8秒、文字列変換版 4.6秒でした。
多倍長整数サポートのある言語の挑戦をお待ちしております。w
そろそろ次スレが必要だな
>>861 Io
f := method(n,
s := n asString
b := s size
s removeSeq("0") alignLeft(b, "0") asNumber
)
Io> f(20010307)
==> 21370000
>>861 J
(-.&'0'{.!.'0'~#)&.": 20010307
21370000
>>861 R
f <- function(n){
a <- unlist(strsplit(paste(n), ""))
as.numeric(paste(c(a[a > "0"], a[a == "0"]),collapse = ""))
}
> f(20010307)
[1] 21370000
>>889 , 891
処理系で動作に違いが出ることがあるので、sortをstable-sortに修正
(defun zero-push (x) (let ((s (princ-to-string x))) (labels ((zc (n m) (equal m #\0)))
(parse-integer (stable-sort s #'zc)))))
>>847 ,861 Haskell
import Data.List
main = do
print $ f847 [3,1,-7,-1,5]
print $ f861 20010307
f847 :: Integral a => [a] -> [[a]]
f847 = (flip (map . (!!)) =<< ((elemIndices =<< minimum) . (map (sum . map abs . tail . scanl1 (+))))) . permutations
f861 :: (Integral a, Show a, Read a) => a -> a
f861 = read .uncurry (++) . partition (/='0'). show
>>861 python3
>>> import re
>>> f = lambda i: int((lambda s,f: f('0','',s)+f('[^0]','',s))(str(i),re.sub))
>>> f(20010307)
21370000
お題 幅と高さがそれぞれw,hでw*h個のマスを全てペンキで塗ります 最初は左上(0,0)の地点にいて 上下左右の移動に1ターン、上下左右のマスを塗るのに1ターンかかります 塗ったばかりのマスは次の5ターンの間踏めません、また、1ターンその場で待機することも出来ます w,hが与えられた時最小ターン数を返す関数を作成せよ 例:(3,2) => 9 0(スタート) ○□□ □□□ 1(左下マスを塗る) ○□□ ■□□
2(左下マスは踏めない) □○□ ■□□ 3(左下マスは踏めない) ■○□ ■□□ 4(左下マスは踏めない) ■○■ ■□□ 5(左下マスは踏めない) ■□■ ■○□ 6(左下マスは踏めない) ■■■ ■○□ 7(左下マスは踏める) ■■■ ■○■ 8(左下マスは踏める) ■■■ ●□■ 9(エンド) ■■■ ●■■
不正な値や、全て塗るのが不可能なとき(0,0)や(1,1)等は-1を返せ
>>861 J
>>866 のsortを使うやり方で
(/:'0'&=)&.":20010307
21370000
>>909 @Mathematica
http://ideone.com/g6SiVM 関数の説明:
- buildInitialState : 初期状態を作る。
- painterAutomaton : 移動したり色を塗ったりするオートマトン。
- mapOneStep : オートマトンの操作、ステップを進める、タイルを乾かす
- allPaintedMemberQ : すべてのタイルが塗られたかチェックする
- minStepToPaintAll : 計算の取りまとめ、結果の表示
結果:
In := minStepToPaintAll[3, 2]
Out = 9
>>909 python3
def update(xs, x): return xs[1:]+(x,)
def gen_next(w, h, s):
x,y,done,ng = s
p = (x+1,y)
if x < w-1 and p not in done: yield ((x,y,(p,)+done,update(ng,p)),'x+1')
if x < w-1 and p not in ng: yield ((x+1,y,done,update(ng,None)),'++x')
p = (x,y+1)
if y < h-1 and p not in done: yield ((x,y,(p,)+done,update(ng,p)),'y+1')
if y < h-1 and p not in ng: yield ((x,y+1,done,update(ng,None)),'++y')
p = (x-1,y)
if x > 0 and p not in done: yield ((x,y,(p,)+done,update(ng,p)),'x-1')
if x > 0 and p not in ng: yield ((x-1,y,done,update(ng,None)),'--x')
p = (x,y-1)
if y > 0 and p not in done: yield ((x,y,(p,)+done,update(ng,p)),'y-1')
if y > 0 and p not in ng: yield ((x,y-1,done,update(ng,None)),'--y')
yield ((x,y,done,update(ng,None)),'pass')
続く
>>915 続き
def gen(w, h, _s, rec):
if rec > 0:
x,y,done,ng = _s
if len(done) == w*h: yield ()
for s, move in gen_next(w, h, _s):
for rest in gen(w, h, s, rec-1):
yield (move,)+rest
def penki(w, h):
if w < 1 or h < 1 or (w,h)==(1,1): return -1
rec = w*h
while True:
for xs in gen(w, h, (0,0,(),((),(),(),(),())), rec): return xs
rec += 1
xs=penki(3,2); print(xs != -1 and len(xs)); print(xs)
(10,10)の答えを出せた人が優勝
(10,10)=146?
お前らよくそんな簡単に答え出せるな。
C++&Windowsでフレームワーク組むのに200行もかかってもう限界!!
やっと本題に入れる頃には疲弊しきってて泣けてくるわ。
誰か俺の頭手術してくれ。
とりあえず、フレームだけ。
WINDOWS専用だが、環境依存部分はなるべく切り離した。
ttp://ideone.com/16SrWi 俺、1日200行前後が限界。どの言語でも。
ヘルプミー。
ある程度大きくなるとSの字でせめて 最後は決まったパターンでの攻略になるな
いや、渦巻きの方がいいのか
922 :
919 :2013/11/17(日) 03:20:30.22
俺はS字を思い浮かべてたけど、旨いことコードにできなかったなぁ。 その前に力尽きたし。
お題:実行すると元のソースコードの倍のサイズのコードを生成し、 その生成されたコードを実行するとまた倍になる倍返しプログラム。 サイズ以外は特に規定はありません。
コードというか関数で JavaScript function fun(){ var f=''+arguments.callee return eval("("+f.slice(0,-1)+";".repeat(f.length)+"})") } fun.toString().length //100 fun().toString().length //200 fun()().toString().length //400 fun()()().toString().length //800
>>909 Haskell
ideone.com/4Cd3Js
一部丸パクリしました
これで合っているのかわかりません
926 :
925 :2013/11/17(日) 16:13:02.52
あ、間違えてるわ dryしわすれてるわ 何で解けてんだろう
927 :
925 :2013/11/17(日) 16:37:19.97
修正したら糞遅くなったのでボツにします
928 :
925 :2013/11/17(日) 17:25:58.22
そもそも解けてなかった
概算 1マス進んで進行方向以外の3マスを塗るのが基本なので、大体3マス塗るのに4ターンかかる (n,m)=>(4/3)mn (10,10)=>133.33 法則 (n,1)=>2n+1 (n>=4) (n,2)=>3n-0 (n>=3) (n,3)=>5n-1 (n>=2) 経験 (n,4)=>6n+1 (n>=3) (n,5)=>7n+3 (n>=3) 想像 (n,6)=>8n+5 (n>=3) (n,7)=>9n+7 (n>=3) 仮定 (n,m)=>mn+2n+2m-7 (n,m>=3) (10,10)=>133
930 :
925 :2013/11/17(日) 17:54:00.29
(3,3)は14で合ってます?
合ってる
932 :
925 :2013/11/17(日) 18:03:18.40
>>931 それならこれで正解ですかね
>>909 Haskell
修正版
ideone.com/cSZMLK
>>909 >>917 能力不足でプログラムはかけそうにないので、(10,10)に人力で挑戦。
DrLDrLDrLDrLDrLDrLDrLDrLRdURd
LURdLURdLURdLURdLURdLURdLURdU
RlRlURlURlURlURlURlURlRuDuRDu
RDuRDuRDuUDrLUrLUDrLUDrLUDrLU
DrLUdUdLUdUDlRDlURDlURDlURDlR
小文字が移動で大文字が塗り。
計145
>>932 大きいのは大丈夫
けど(2,2)が-1になる
935 :
925 :2013/11/17(日) 18:12:34.59
>>934 フィルターの仕方が悪いのでしょうか
この辺で諦めます
自分も人力渦巻きで試してみたが145だな
理論値は133として 理論値には一定以上の大きさで発生する折り返しの無駄が入ってないから 3回は折り返して各3ターンくらい無駄になるとして+9 あと折り返すと角が増えてその処理で無駄ができるから+3 で145でいいんじゃない
938 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/17(日) 21:36:47.11
お題:与えられたRGB値(各成分0〜255)に最も近いWebセーフカラーを求める。
>>938 #include<stdio.h>
unsigned int RGB_to_WebColor(unsigned int rgb)
{
int i;
unsigned int c, d, r = 0;
for (i = 0; i < 3; i++) {
c = rgb & 0xFF;
d = c % 0x33;
c = (c / 0x33 + ((d <= 0x19) ? 0 : 1)) * 0x33;
r |= c << 24;
r >>= 8;
rgb >>= 8;
}
return r;
}
int main()
{
unsigned int rgb = 0x1f2f54;
printf("RGB #%X --> Web Color #%X\n", rgb, RGB_to_WebColor(rgb));
return 0;
}
(4,4)は23 RdRUdDUrDLrRDLuDUrLUdDU (10,10)は分からんが、まわりを埋めてから中央の4x4を埋めたら143になった
>>938 Io
f := method(x, x map(v, (v / 51) round * 51))
Io> f(list(115,54,233))
==> list(102, 51, 255)
256じゃなくて216色だよね
>>938 Clojure
(defn f [xs]
(map #(-> % (/ 0x33) double Math/round (* 0x33)) xs))
(print (f [115, 54, 233])) ; (102 51 255)
インデントの入れ方がわからない
>>939 > unsigned int c, d, r = 0;
↓
> unsigned int c, r = 0;
> for (i = 0; i < 3; i++) {
> c = rgb & 0xFF;
> d = c % 0x33;
> c = (c / 0x33 + ((d <= 0x19) ? 0 : 1)) * 0x33;
↓
> for (i = 0; i < 3; i++) {
> c = rgb & 0xFF;
> c = ((c + (0x33 / 2)) / 0x33) * 0x33;
> printf("RGB #%X --> Web Color #%X\n", rgb, RGB_to_WebColor(rgb));
↓
> printf("RGB #%06X --> Web Color #%06X\n", rgb, RGB_to_WebColor(rgb));
>>930 ,931
(3,3)=14ってどう歩を進めるの?
何回やっても16になるんだけど orz
お題:RGBで与えられた色の補色を求める。
>>946 Io
f := method(x,
a := x max + x min
x map(v, a - v)
)
Io> f(list(255,100,50))
==> list(50, 205, 255)
>>946 Squeak Smalltalk
| rgb |
rgb := #(255 216 31).
rgb max + rgb min - rgb "=> #(31 70 255) "
>>938 Squeak Smalltalk
| rgb |
rgb := #(115 54 233).
rgb roundTo: 51 "=> #(102 51 255) "
>>909 Squeak Smalltalk
| mat genNeighs neighs pos queue |
mat := Matrix rows: 2 columns: 3 element: -1.
pos := 1@1.
genNeighs := [pos + {(-1@0). (1@0). (0@ -1). (0@1)} select: [:pt |
(pt x between: 1 and: mat columnCount) and: [pt y between: 1 and: mat rowCount]]].
queue := OrderedCollection with: {pos->mat}.
[queue notEmpty] whileTrue: [
| prevMat seq |
seq := queue removeFirst.
pos := seq last key.
prevMat := mat := seq last value.
(mat noneSatisfy: #negative) ifTrue: [^seq allButFirst size].
neighs := genNeighs value.
mat indicesDo: [:y :x | (mat at: y at: x) > 0 ifTrue: [mat at: y at: x incrementBy: -1]].
neighs select: [:pt | (mat at: pt y at: pt x) <= 0]
thenDo: [:pt | queue add: seq, {pt->mat copy}].
neighs select: [:pt | (mat at: pt y at: pt x) < 0]
thenDo: [:pt | queue add: seq, {pos->(mat copy at: pt y at: pt x put: 5; yourself)}].
prevMat ~= mat ifTrue: [queue add: seq, {pos->mat copy}]].
^-1 "=> 9 "
富豪的すぎるので暇をみてもうちょっとリファインします^^;
953 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/11/19(火) 19:23:54.71
お題:与えられたSVG画像ファイルについて以下の各動作を行うプログラムを作れ。 (i)フォント参照をすべて「MS UI Gothic」に変更する。 (ii)画像の高さと幅を2倍に拡大する。 (iii)画像の真ん中を中心に右に90度回転する。
動作をして表示するのか保存するのか、それともするだけ???
実用性を考えれば保存がいいだろう。 ヒント:SVGはXMLで書かれている
SVGの知識がいるので面倒
SVGを制する者はドロー系ソフトを制する。精進しまたえ。
君の人望が無いから仕方ない 君がまず書けばいいのに
人望の無い出題者はまず自分で書いたのを公開してから出題することにしては?
お題:勤務時間を記録し、必要に応じて給与計算を行うシステム。データベースを用いること。
君がまず書けばいいのに
XMLもDBも知らんでPG名乗るな
ドラゴンボールなら知ってるよ
OODBならよく使う。
SVGはXML XMLは文字列 ルールが変わるリスクを考えるとSVGの知識より一般の文字列の知識が欲しくなる
>>965 刺身を切るなら万能包丁よりも刺身包丁使うだろ。
XMLさばくなら、XML用のツールやライブラリ使うだろ。
XMLデータを文字列まで一般化して扱うのは愚か。
俺は万能包丁でもさしみ作れるけど
>>909 微妙に合わない。
int func(int a, int b)
{
if (a < b)
return func(b, a);
int t = b / 3 + 1;
return a * b + a * t + b - t - 1;
}
柳刃持ってるけどなんか俺にはうまく使えんw 熟練者の理屈で刺身向きなのは分かるんだけどね 慣れた道具で済む案件なら文字列処理もいいんじゃね 柳刃みたいな限定用途ものは素人抜けたら嫌でも必然性に気づくもんだろうからその時でいい
>>952 Squeak Smalltalk
ちょっとだけメモリ節約してなんとか(3,3)まで出せるようにしました。
| map dir genDts dts pos memo queue |
map := Matrix rows: 3 columns: 3 element: -1.
pos := 1@1.
dir := {(-1@0)->'L'. (1@0)->'R'. (0@ -1)->'U'. (0@1)->'D'} as: Dictionary.
genDts := [dir keys select: [:dt |
((pos + dt) x between: 1 and: map columnCount)
and: [(pos + dt) y between: 1 and: map rowCount]]].
memo := OrderedCollection with: pos->map asArray sign.
queue := OrderedCollection with: ''->(pos->map).
[queue notEmpty] whileTrue: [
| curr sign |
curr := queue removeFirst.
pos := curr value key.
map := curr value value.
(map noneSatisfy: #negative) ifTrue: [^{curr key size. curr key}].
dts := genDts value.
map indicesDo: [:y :x | (map at: y at: x) > 0 ifTrue: [map at: y at: x incrementBy: -1]].
dts select: [:dt | (map at: (pos + dt) y at: (pos + dt) x) <= 0
and: [(memo includes: (sign := (pos + dt)->map asArray sign)) not]]
thenDo: [:dt | queue add: curr key, (dir at: dt) asLowercase->((pos + dt) ->map copy). memo add: sign].
dts select: [:dt | (map at: (pos + dt) y at: (pos + dt) x) < 0]
thenDo: [:dt |
| after |
after := map copy at: (pos + dt) y at: (pos + dt) x put: 6; yourself.
queue add: curr key, (dir at: dt)->(pos->after)].
(memo includes: (sign := pos->map asArray sign))
ifFalse: [queue add: curr key, '.'->(pos->map). memo add: sign]].
^-1 "=>#(14 'rdRDLuRLdUdRLU') "
>>932 >>909 Haskell
ideone.com/6kdpdT
(2,2)も解けるようになりましたが、(3,3)以上は無理っぽい
しばらくアルゴリズムの勉強でもします
972 :
971 :2013/11/20(水) 07:07:52.32
あー(1,1)が解けない
>>972 (1,1)は解けなくて良いんじゃない?
974 :
972 :2013/11/20(水) 07:30:37.51
>>973 >>911 があるので一応
| x <= (1, 1) = -1
後dry書き直し
ts' = fmap dry ts
dry t
| w <- wet t, w > 0 = t {wet = w - 1}
| otherwise = t
人間もまだまだ捨てたもんじゃないことが分かるお題だったな
>>909-910 は 足元が濡れないのは難しいな。とか煽ってみる。
こんな良問生産できる気概のない俺だけど。
お題:'+'と'-'の文字を使わないコードで"Hello, world!"をn回、表示する。
>>978 組み込みの範囲表現とかがある言語だと面白くないお題ですね
とりあえず酔った頭でjsで
var n=30;
for(i=1;i<(1<<n);i=i*2)console.log("hello,world");
インデックスカウントをシフトに置き換えただけなので、当然大きいnに対応できないのがどうにもカコワルイ
明日もうちょい頭捻ってみる
"hello,world".repeat(n).match(/.{11}/g).forEach(function(t){console.log(t)})
% 私の流儀のPrologだと不可能ですね。なぜなら、述語名に出てきてしまいます。 '''+''と''-''の文字を使わないコードで"Hello, world!"をn回、表示する。'(_n) :- forall(between(1,_n,_),write('Hello, Wold!\n')).
>>978 思考停止系
n.times do p "Hello, world!" end
(doseq [n (range n)] (println "Hello, world!"))
(loop for x from 1 to n do (print "Hello, world!"))
[0 .. 5] |> List.iter (fun _ -> printfn "Hello, world!")
for x = 0 to n do print_endline "Hello, world!" done
C言語だと、シフト演算でADDの回路再発明することになるなー。 どうしようかな〜。
関数呼んだらなんとでもなるけどつまらんね #include <cstdio> #include <semaphore.h> int main() { int n = 8; sem_t sem; sem_init(&sem, 0, 0); for (;;) { int value; sem_getvalue(&sem, &value); if (value >= n) { break; } printf("hello world\n"); sem_post(&sem); } }
% 再帰版 'お題:''+''と''-''の文字を使わないコードで"Hello, world!"をn回、表示する。'(_n) :- length(Ln,_n), '"Hello, world!"をn回、表示する。'(Ln). '"Hello, world!"をn回、表示する。'([]). '"Hello, world!"をn回、表示する。'([_|R]) :- write('Hello, World!'), '"Hello, world!"をn回、表示する。'(R).
半加算回路の作り方忘れた。くそー自力では無理か。 カンニングしてしまいます〜。
>>982 Smalltalkも追加
n timesRepeat: [Transcript cr; show: 'Hello, world!']
こういうお題を思いつく人がふだんどんな言語使っているのか興味あるな
>>978 Haskell 誤差が出そう
import Control.Monad
import Control.Concurrent
main = f =<< fmap read getLine
f n = do _ <- forkIO g; threadDelay $ n * 1000 * 100
g = do
threadDelay $ 1000 * 10
_ <- forkIO $ forever $ do {putStrLn "Hello, world!"; threadDelay $ 1000 * 100}
return ()
>>971 >>909 同じ位置になるのをフィルターしてパスなしとパスありを分けたら(3,3)も解けた
ideone.com/RQJ2ND
js n=128; a=[];while(a.length<n){a.push("");console.log("hello,world!");}
「ロハでいいのか?」「パワーは足りるのか?メモリは?」とか、いろいろびっくり
次はこちらでお題を出してみようと思います。 プログラミングのお題スレ
>>978 // HSP その1
n=5
repeat n
mes "Hello, world!"
loop
// HSP その2
n=5
repeat
if length(count)>n : break
count(length(count))=1
mes "Hello, world!"
loop
997 :
デフォルトの名無しさん :2013/11/22(金) 20:41:27.17
次スレよろ
999 :
デフォルトの名無しさん :2013/11/22(金) 23:29:05.55
埋めっちゃが
子供を産め産め
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。