切符の数字で10を作れ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG切符に印字された4桁の数字。
4つの数字と四則演算を使って10を作るという遊び。
あれをいかにCOOLな方法で実装するかを競うのがこのスレの遊び。
4桁の数字の入力を受けて10が作れるか検討するプログラムもよし。
全件のリストをはきだすもよし。
言語は問わない。
lispでさくっと実装するもよし。
COBOLやBASICで実装するもよし。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006JavaScript
NGNG<head>
<title>
kippu no suuji de 10 wo tsukuru script
</title>
</head>
<body>
<script language = "JavaScript">
<!--
document.numbers.hyouji.value = "";
function k(a1,op,a2){ //keisan suru kansuu
if(op == 0) {return parseFloat(a1)+parseFloat(a2);}
if(op == 1) {return parseFloat(a1)-parseFloat(a2);}
if(op == 2) {return parseFloat(a1)*parseFloat(a2);}
if(op == 3 && a2 != 0) {return parseFloat(a1)/parseFloat(a2);}
return "err";
}
function check(a0, a1, a2, a3) {
opst = new Array();
opst[0] = "+";
opst[1] = "-";
opst[2] = "*";
opst[3] = "/";
for (o0 = 0; o0 < 4; o0++){
for(o1 = 0; o1 < 4; o1++){
0007JavaScript
NGNG// ((a0 o0 a1) o1 a2) o2 a3
result = k(k(k(a0,o0,a1),o1,a2),o2,a3);
if(9.99 <= result && result <= 10.01){
document.numbers.hyouji.value = document.numbers.hyouji.value+
"(("+a0+opst[o0]+a1+")"+opst[o1]+a2+")"+opst[o2]+a3+"="+result+"\n";
}
// (a0 o0 (a1 o1 a2) o2 a3
result = k(k(a0, o0, k(a1, o1, a2)), o2, a3);
if(9.99 <= result && result <= 10.01){
document.numbers.hyouji.value = document.numbers.hyouji.value+
"("+a0+opst[o0]+"("+a1+opst[o1]+a2+"))"+opst[o2]+a3+"="+result+"\n";
}
// (a0 o0 a1) o1 (a2 o2 a3)
result = k(k(a0, o0, a1), o1, k(a2, o2, a3));
if(9.99 <= result && result <= 10.01){
document.numbers.hyouji.value = document.numbers.hyouji.value+
"("+a0+opst[o0]+a1+")"+opst[o1]+"("+a2+opst[o2]+a3+")"+"="+result+"\n";
}
// a0 o0 ((a1 o1 a2) o2 a3)
result = k(a0, o0, k(k(a1, o1, a2), o2, a3));
if(9.99 <= result && result <= 10.01){
document.numbers.hyouji.value = document.numbers.hyouji.value+
a0+opst[o0]+"(("+a1+opst[o1]+a2+")"+opst[o2]+a3+")"+"="+result+"\n";
}
// a0 o0 (a1 o1 (a2 o2 a3))
0008JavaScript
NGNGif(9.99 <= result && result <= 10.01){
document.numbers.hyouji.value = document.numbers.hyouji.value+
a0+opst[o0]+"("+a1+opst[o1]+"("+a2+opst[o2]+a3+"))"+"="+result+"\n";
}
}
}
}
}
function calcAndPrint() {
document.numbers.hyouji.value = "";
num1 = document.numbers.n1.options[document.numbers.n1.selectedIndex].value;
num2 = document.numbers.n2.options[document.numbers.n2.selectedIndex].value;
num3 = document.numbers.n3.options[document.numbers.n3.selectedIndex].value;
num4 = document.numbers.n4.options[document.numbers.n4.selectedIndex].value;
check(num1, num2, num3, num4);
check(num1, num2, num4, num3);
check(num1, num3, num2, num4);
check(num1, num3, num4, num2);
check(num1, num4, num2, num3);
check(num1, num4, num3, num2);
check(num2, num1, num3, num4);
check(num2, num1, num4, num3);
check(num2, num3, num1, num4);
check(num2, num3, num4, num1);
0009JavaScript
NGNGcheck(num2, num4, num3, num1);
check(num3, num1, num2, num4);
check(num3, num1, num4, num2);
check(num3, num2, num1, num4);
check(num3, num2, num4, num1);
check(num3, num4, num1, num2);
check(num3, num4, num2, num1);
check(num4, num1, num2, num3);
check(num4, num1, num3, num2);
check(num4, num2, num1, num3);
check(num4, num2, num3, num1);
check(num4, num3, num1, num2);
check(num4, num3, num2, num1);
}
//-->
</script>
<form name="numbers">
<select name="n1">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
0010JavaScript
NGNG<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<select name="n2">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<select name="n3">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
0011JavaScript
NGNG</select>
<select name="n4">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<input type="button" value = "計算" onClick = "calcAndPrint();">
<br>
<textarea name="hyouji" rows = 10 cols = 50 >
</textarea>
</form>
<br>
</body>
</html>
0012JavaScript
NGNG<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<select name="n2">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<select name="n3">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
0013JavaScript
NGNGcheck(num2, num4, num3, num1);
check(num3, num1, num2, num4);
check(num3, num1, num4, num2);
check(num3, num2, num1, num4);
check(num3, num2, num4, num1);
check(num3, num4, num1, num2);
check(num3, num4, num2, num1);
check(num4, num1, num2, num3);
check(num4, num1, num3, num2);
check(num4, num2, num1, num3);
check(num4, num2, num3, num1);
check(num4, num3, num1, num2);
check(num4, num3, num2, num1);
}
//-->
</script>
<form name="numbers">
<select name="n1">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
0014JavaScript
NGNGif(9.99 <= result && result <= 10.01){
document.numbers.hyouji.value = document.numbers.hyouji.value+
a0+opst[o0]+"("+a1+opst[o1]+"("+a2+opst[o2]+a3+"))"+"="+result+"\n";
}
}
}
}
}
function calcAndPrint() {
document.numbers.hyouji.value = "";
num1 = document.numbers.n1.options[document.numbers.n1.selectedIndex].value;
num2 = document.numbers.n2.options[document.numbers.n2.selectedIndex].value;
num3 = document.numbers.n3.options[document.numbers.n3.selectedIndex].value;
num4 = document.numbers.n4.options[document.numbers.n4.selectedIndex].value;
check(num1, num2, num3, num4);
check(num1, num2, num4, num3);
check(num1, num3, num2, num4);
check(num1, num3, num4, num2);
check(num1, num4, num2, num3);
check(num1, num4, num3, num2);
check(num2, num1, num3, num4);
check(num2, num1, num4, num3);
check(num2, num3, num1, num4);
check(num2, num3, num4, num1);
0015JavaScript
NGNG<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<select name="n2">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
<option value = 9>9
</select>
<select name="n3">
<option selected value = 0>0
<option value = 1>1
<option value = 2>2
<option value = 3>3
<option value = 4>4
<option value = 5>5
<option value = 6>6
<option value = 7>7
<option value = 8>8
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0001
だったりしたら「つくれない」が答えだと思われ。
0019デフォルトの名無しさん
NGNG10 + 0 + 0
0020デフォルトの名無しさん
NGNGローカルルールがありそうだね…
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGはりきってどうぞ。
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG総当り
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG√9 * √9 * 1 + 1
0028デフォルトの名無しさん
NGNGルート無しの場合も考えてみて
002927
NGNG( 91 - 1 ) / 9とか
マジレス
( 1 / 9 + 1 ) * 9
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGじゃあつくれ
0032デフォルトの名無しさん
NGNG他力本願はやめろ。
0033デフォルトの名無しさん
NGNGswitch(o){
case 0:
a1+=a2;
break;
case 1:
a1-=a2;
break;
case 2:
a1*=a2;
break;
case 3:
(a2==0) ?(0) :(a1/=a2);
break;
}return a1;}
char* getO(int n){
switch(n){
case 0:
return "+";
case 1:
return "-";
case 2:
return "*";
case 3:
return "/";
}}
0034デフォルトの名無しさん
NGNGint res;
while(true){
int r;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
for(int k=0;k<10;k++){
for(int n=0;n<10;n++){
for(int o1=0;o1<4;o1++){
int A=get(i,j,o1);
for(int o2=0;o2<4;o2++){
int B=get(A,k,o2);
for(int o3=0;o3<4;o3++){
if(B==10)
break;
int C=get(B,n,o3);
if(C==10)
{
printf("%d %s %d %s %d %s %d",i,getO(o1),j,getO(o2),k,getO(o3),n);
printf("\n");
}
}}}//for
}}}}
}
return 0;
}
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG演算子は優先順位無しで左結合扱いっていうルールか。
かっこの有無とか、並べて2桁の数字にしていいかとかでめんどくささが変わりそうね
0037デフォルトの名無しさん
NGNG>>4桁の数字の入力を受けて
2桁の数字もありなのか?どうなんだ?
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG左右の数字をくっつける演算子を増やせばいいだけ。
0040デフォルトの名無しさん
NGNG追加1: %(剰余) を追加。
追加2: 結果が整数になる √(平方根) を追加(1, 4, 9)。
追加3: &(論理積)、|(論理和)、^(排他的論理和) を追加。
追加4: 2進数8桁の ~(ビット反転) を追加。
追加4': 10進数での ~(ビット反転) を追加。
とかなー
0041デフォルトの名無しさん
NGNG商は整数にならなくても最後につじつまが合えばよいのでは?
0042デフォルトの名無しさん
NGNG母者から教わったルールは2桁以上はなしで順番の入れ替えはありだよん
ival=inputbox("4桁の数字入れれ")
if len(ival)<>4 then wscript.quit
for q=0 to 4*4*4-1
op=q
oval=clng(mid(ival,1,1))
for r=2 to 4
select case op mod 4
case 0:oval=oval+clng(mid(ival,r,1))
case 1:oval=oval-clng(mid(ival,r,1))
case 2:oval=oval*clng(mid(ival,r,1))
case 3:oval=oval/clng(mid(ival,r,1))
end select
op=op\4
next
0043デフォルトの名無しさん
NGNGop=q
out=mid(ival,1,1)
for r=2 to 4
select case op mod 4
case 0:out=out&"+"&mid(ival,r,1)
case 1:out=out&"-"&mid(ival,r,1)
case 2:out=out&"*"&mid(ival,r,1)
case 3:out=out&"/"&mid(ival,r,1)
end select
op=op\4
next
msgbox out,4096,"でけた"
exit for
end if
next
0044C言語 ひたすら表示
NGNGint Count(int num1,int num2,int enzansi){
if(enzansi==3&&num2==0)return -32768;
return enzansi==0?num1+num2:enzansi==1?num1-num2:enzansi==2?num1*num2:num1/num2;}
char E(int enzansi){return enzansi==0?'+':enzansi==1?'-':enzansi==2?'*':'/';}
int main(void){
int num[4]={0};int enzansi[3];int a,n,c=0;
for(;num[3]<=9;){
for(a=0;a<=2;a++)enzansi[a]=0;
for(;enzansi[2]<=3;){
for(a=0,n=num[0];a<=2;a++)
n=Count(n,num[a+1],enzansi[a]);
if(n==10){printf("%d%c%d%c%d%c%d ",num[0],E(enzansi[0]),num[1],E(enzansi[1]),num[2],E(enzansi[2]),num[3],n);c++;
if(c%200==0){printf("続きを表示します 改行を押してください");getchar();}}
enzansi[0]++;for(a=0;a<=1;a++)if(enzansi[a]==4)
{enzansi[a]=0;enzansi[a+1]++;}}
num[0]++;for(a=0;a<=2;a++)if(num[a]==10){
num[a]=0;num[a+1]++;}}
printf("\n終了します 改行を押してください");getchar();return 0;}
0045デフォルトの名無しさん
NGNGかっこ有りとか無しとか。
使ってる演算子の種類とか。
0046デフォルトの名無しさん
NGNG004744
NGNG>>44
言語:C(標準Cのみ) 動作:Cコンパイラ全般
○□○□○□○ (○==数値(0~9) □==演算子(+-*/))の組み合わせの
パターン(640000通り)の演算を行い、10に成るもののみ表示する。
演算は左から順番に行う。割り算は切り捨てる。
0048デフォルトの名無しさん
NGNGint add(int a,int b){ return a+b; }
int sub(int a,int b){ return a-b; }
int mul(int a,int b){ return a*b; }
int div(int a,int b){ return b ? a/b : 0x7fffffff; }
int mod(int a,int b){ return b ? a%b : 0x7fffffff; }
int and(int a,int b){ return a&b; }
int or(int a,int b){ return a|b; }
int xor(int a,int b){ return a^b; }
main()
{
const int num=10;
const int opn=8;
int (*op[])(int,int)={add,sub,mul,div,mod,and,or,xor};
char ops[]={'+','-','*','/','%','&','|','^'};
for(int i=0; i<num; i++)
for(int j=0; j<num; j++)
for(int k=0; k<num; k++)
for(int n=0; n<num; n++)
for(int a=0; a<opn; a++)
for(int b=0; b<opn; b++)
for(int c=0; c<opn; c++)
if(op[c](op[b](op[a](i,j),k),n)==10)
printf("((%d%c%d)%c%d)%c%d\n",i,ops[a],j,ops[b],k,ops[c],n);
}
c言語
演算子は{'+','-','*','/','%','&','|','^'}; 2項演算子系なら簡単に追加可能
演算は左から順番
10と等しかったら表示する
0049デフォルトの名無しさん
NGNGひさしぶりに気持ち良いプログラムをみた
0050デフォルトの名無しさん
NGNGかっこいい。int (*op[])(int,int)={add,sub,mul,div,mod,and,or,xor};は
関数のポインタと言うやつ?初めて見ますた。
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG(3-7/4)*8
とか
(1/9+1)*9
とか認めたいし。
0054デフォルトの名無しさん
NGNGそれが 9.999... だったり 10.000... だったりにならなければな。
分子と分母(ともに整数)で分けて扱うとかな。
0055デフォルトの名無しさん
NGNG>6は9.99<10<10.01で判定しているようだが。
0056デフォルトの名無しさん
NGNG実行速度競うってのどうよ?
0057デフォルトの名無しさん
NGNG表示速度争いは極度の不公平。
バックトラックだろうとこの程度の計算量では話にならん。
--------------------------終了------------------------
0058デフォルトの名無しさん
NGNG0059aki
NGNG0061デフォルトの名無しさん
NGNG「2334」だと、2^4-3-3 しか答えがないような気がする。
あと、立方根とか。
「3448なら」3√8(8の立方根) +4+4
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGなんか√使うの反則な気もする
0064デフォルトの名無しさん
NGNGそだねーw
あと、「2258」lを、「log2(底)の8」+2+5とか・・・w
0065デフォルトの名無しさん
NGNG「2334」
( 4 / 3 + 2 ) * 3
「3448」
( 3 * 4 ) - ( 8 / 4 )
0066デフォルトの名無しさん
NGNGCで足りるということか。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG(6*(7+8))/9
0069デフォルトの名無しさん
NGNGのようなやりとりをプログラムで実現しろというのが>>1の主張なのでは?
007142=68
NGNGdim ival()
istr=inputbox("4桁の数字入れれ")
if len(istr)=4 then
redim ival(3)
for i=0 to 3
ival(i)=cint(mid(istr,i+1,1))
next
for i=0 to 3
for j=0 to 3
for k=0 to 3
for l=0 to 1
if l=1 then ival(0)=-ival(0)
for x=0 to 2
for y=0 to 1
ans=val(ival(x),i,ival(x+1))
out=val2(ival(x),i,ival(x+1))
select case x
case 0
select case y
case 0
ans=val(val(ans,j,ival(2)),k,ival(3))
out=val2(val2(out,j,ival(2)),k,ival(3))
case 1
ans=val(ans,k,val(ival(2),j,ival(3)))
out=val2(out,k,val2(ival(2),j,ival(3)))
end select
007242=68
NGNGselect case y
case 0
ans=val(val(ival(0),j,ans),k,ival(3))
out=val2(val2(ival(0),j,out),k,ival(3))
case 1
ans=val(ival(0),k,val(ans,j,ival(3)))
out=val2(ival(0),k,val2(out,j,ival(3)))
end select
case 2
select case y
case 0
'やらない
case 1
ans=val(ival(0),k,val(ival(1),j,ans))
out=val2(ival(0),k,val2(ival(1),j,out))
end select
end select
if ans=10 then
if instr(replace(replace(out2,"(",""),")",""),replace(
replace(out,"(",""),")",""))=0 then
out2=out2&vbcrlf&" |"&out
end if
end if
out=""
007342=68
NGNGnext
next
next
next
next
if len(out2)<>0 then
msgbox " / ̄ ̄ ̄ ̄"&vbcrlf&"< でけた"&out2&vbcrlf&" \____",vbcritical+4096,"10作る"
else
msgbox " / ̄ ̄ ̄ ̄"&vbcrlf&"< できない"&vbcrlf&" \____",vbcritical+4096,"10作る"
end if
end if
function val(a,op,b)
select case op
case 0:val=a+b
case 1:val=a-b
case 2:val=a*b
case 3:if b=0 then val=-100 else val=a/b
end select
end function
function val2(a,op,b)
select case op
case 0:val2=a&"+"&b
case 1:val2=a&"-"&b
case 2:val2=a&"*"&b
case 3:val2=a&"/"&b
end select
val2="("&val2&")"
end function
既出判定が汚い。
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG自分で書いて晒せ
0077デフォルトの名無しさん
NGNGa+b+c*d==10
a+b+c/d==10
...
a+b+c-d==10
...
いっぱいやってく?
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG解答を用意する時間が掛かる。
0083デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG4-(9-(3*5))
4-(9-(5*3))
こういうのもダブり?
0086デフォルトの名無しさん
NGNGだぶりだろうな。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG小町算とかいう江戸時代の・・・・・
0089デフォルトの名無しさん
NGNG4-(9-3*5)
3*5-9+4
これもだぶりだよね?
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG4-(9-3*5)と
4+(3*5-9)
っていうのがいいたかったんしょ
009392
NGNG4+(3*5-9)と
4+3*5-9 はだぶりなんだろうか・・・
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG随分減るな
0096デフォルトの名無しさん
NGNG(5/1)/(1/2)
(2*1)/(1/5)
(5*1)/(1/2)
こういうのは?
0097デフォルトの名無しさん
NGNG(1+2+3+4)
((1+2+3+4))
(((1+2+3+4)))
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG((;゚Д゚))ガタガタ
(((;゚Д゚)))ガタガタブル
((((;゚Д゚))))ガタガタブルブル
0100デフォルトの名無しさん
NGNG標準的な記述方法を決めて、ある式が与えられた時それを標準化する方法を決めて、
標準形式になったヤシを同値類とかんがえればよいのだ。
0101デフォルトの名無しさん
NGNGその標準方法を決めるのが、大変そう
0102デフォルトの名無しさん
NGNG数字が昇順に並んでいるものから列挙していって先に出た方が標準でいいのではないか
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG4つの数字の演算パターンは次の二つしかないんだよ。
(A op B) op (C op D)
((A op B) op C) op D
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGA op ((B op C) op D)
A op (B op (C op D))
0107デフォルトの名無しさん
NGNG(A op1 B) op2 C op3 D
A op1 (B op2 C) op3 D
A op1 B op2 (C op3 D)
(A op1 B) op2 (C op3 D)
(A op1 B op2 C) op3 D
(A op1 (B op2 C)) op3 D
((A op1 B) op2 C) op3 D
A op1 (B op2 C op3 D)
A op1 (B op2 (C op3 D))
A op1 ((B op2 C) op3 D)
0108デフォルトの名無しさん
NGNG言語は意味もなくJava
public class TenFinder {
public static final String OP_ADD = "+";
public static final String OP_SUB = "-";
public static final String OP_MUL = "*";
public static final String OP_DIV = "/";
public static final String[] OPS = {OP_ADD, OP_SUB, OP_MUL, OP_DIV};
public static void main(String[] args) {
for (int i = 0; i < 10000; i++) {
int a = i / 1000;
int b = (i - (a * 1000)) / 100;
int c = (i - (a * 1000) - (b * 100)) / 10;
int d = (i - (a * 1000) - (b * 100) - (c * 10)) / 1;
System.out.println(a + " " + b + " " + c + " " + d + "------------------------");
search(a, b, c, d);
}
}
private static void search(int a, int b, int c, int d) {
for (int x = 0; x < OPS.length; x++)
for (int y = 0; y < OPS.length; y++)
for (int z = 0; z < OPS.length; z++)
calculate(a, OPS[x], b, OPS[y], c, OPS[z], d);
}
0109デフォルトの名無しさん
NGNG( ゚Д゚)ポカーン…
0110デフォルトの名無しさん
NGNGcalculateWithPatern1(a, x, b, y, c, z, d);
calculateWithPatern2(a, x, b, y, c, z, d);
calculateWithPatern3(a, x, b, y, c, z, d);
calculateWithPatern4(a, x, b, y, c, z, d);
calculateWithPatern5(a, x, b, y, c, z, d);
}
//(A op B) op (C op D)
private static void calculateWithPatern1(int a, String x, int b, String y, int c, String z, int d) {
try {
int result = simpleCalc(simpleCalc(a, x, b), y, simpleCalc(c, z, d));
if (result == 10) System.out.println("(" + a + x + b + ")" + y + "(" + c + z + d + ") = 10");
} catch (ArithmeticException ex) { return; }
}
//((A op B) op C) op D
private static void calculateWithPatern2(int a, String x, int b, String y, int c, String z, int d) {
try {
int result = simpleCalc(simpleCalc(simpleCalc(a, x, b), y, c), z, d);
if (result == 10) System.out.println("((" + a + x + b + ")" + y + c + ")" + z + d + " = 10");
} catch (ArithmeticException ex) { return; }
}
0111デフォルトの名無しさん
NGNGprivate static void calculateWithPatern3(int a, String x, int b, String y, int c, String z, int d) {
try {
int result = simpleCalc(simpleCalc(a, x, simpleCalc(b, y, c)), z, d);
if (result == 10) System.out.println("(" + a + x + "(" + b + y + c + "))" + z + d + " = 10");
} catch (ArithmeticException ex) { return; }
}
//A op ((B op C) op D)
private static void calculateWithPatern4(int a, String x, int b, String y, int c, String z, int d) {
try {
int result = simpleCalc(a, x, simpleCalc(simpleCalc(b, y, c), z, d));
if (result == 10) System.out.println(a + x + "((" + b + y + c + ")" + z + d + ") = 10");
} catch (ArithmeticException ex) { return; }
}
0112デフォルトの名無しさん
NGNGprivate static void calculateWithPatern5(int a, String x, int b, String y, int c, String z, int d) {
try {
int result = simpleCalc(a, x, simpleCalc(b, y, simpleCalc(c, z, d)));
if (result == 10) System.out.println(a + x + "(" + b + y + "(" + c + z + d + ")) = 10");
} catch (ArithmeticException ex) { return; }
}
private static int simpleCalc(int m, String op, int n) throws ArithmeticException {
if (op.equals(OP_ADD)) return m + n;
else if (op.equals(OP_SUB)) return m - n;
else if (op.equals(OP_MUL)) return m * n;
else {
if (n == 0) throw new ArithmeticException();
if ((m % n) != 0) throw new ArithmeticException();
return m / n;
}
}
}
0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNGそれだけだと簡単だけど、
A-(B-C)=A+(C-B)
A/(B/C)=A*(C/B)
みたいなのも考慮する必要がある。
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG(D*A)/(B*C) (D*A)/(C*B) A*(D/(B*C)) A*(D/(C*B)) D*(A/(B*C))
D*(A/(C*B)) A/((B*C)/D) A/((C*B)/D) D/((B*C)/A) D/((C*B)/A)
これみんな一緒ってことでOK?
0117デフォルトの名無しさん
NGNG(A/(B*C))*D (A/(C*B))*D
(D/(B*C))*A (D/(C*B))*A
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNGまだある。60とおり。
0120デフォルトの名無しさん
NGNG10が作れればOKってことなら、1234で10がつくれたら
1243...4321をすっ飛ばすというのが速そうだが。
0121デフォルトの名無しさん
NGNG>>84の言葉に従ってるだけ。
四則演算で作れる組合せを知るだけなら、>>59にあるので十分。
あそこのは何故かすっ飛ばす処理を入れてないけどな。
四則演算でできない組合せについて方法を探す方が楽しいかも。
0122デフォルトの名無しさん
NGNG((1+2)+3)+4 と (1+(2+3))+4 と (1+2)+(3+4) と … と似たような式を大量に列挙するのはカコワルイなぁ、という意味が。
-----------------------
正しさも列挙しやすさも全く保証しないが標準形を考えてみた。
以下の文法から生成できる式を「準々標準形」とする
expr ::= addsub_expr | muldiv_expr
addsub_expr ::= (expr + int) | (expr - int) | int
muldiv_expr ::= (expr * addsub_expr) | (expr / addsub_expr)
※ 要は、 a op1 (B op2 C) の形が許されるのはop1が乗除算でop2が加減算の時のみ。a-(b-c) はダメで (a-b)+c はOK、などなど。
準々標準形の式のうち、次をみたすものを「準標準形」とする
・ □-△ の形の部分式では、△≠0
・ □/△ の形の部分式では、△≠1
・(□-△)+○ の形の部分式が存在しない
・(□/△)*○ の形の部分式が存在しない
※ 3/(2-1) はダメで 3*(2-1) はOK。((1-2)+3)-4 はダメで ((1+3)-2)-4 はOK、などなど。足し算掛け算が先。
準標準形の式のうち、次を満たす物を「標準形」とする。
・(((A1+A2)+A3)+...+An)
・(((A1*A2)*A3)*...*An)
・(((□-A1)-A2)-...-An)
・(((□/A1)/A2)/.../An)
の形の部分式では、Ai は Ai+1 より「簡単な式」になっている。ただし、
・"数a < 数a+数b < 数a-数b < 数a*数b < 数a/数b < それ以外" の順で左の方が簡単
・↑の基準で同じ簡単さだったら、数aが小さい方が簡単
・↑それでも同じ簡単さだったら、AiとAi+1は同じ簡単さなので順序はどっちでもよし。
と定義する。数字4つならこれで大丈夫なつもり
※ (4-2)/2*2 はダメで 2*(4-2)/2 はOKなどなど。
0123デフォルトの名無しさん
NGNGex)
abcd
a + b + c + d
↓
d + c + b + a
if (dcba <= abcd) nop;
0124デフォルトの名無しさん
NGNGっていうか、abcd < dcbaだったとして、それはdcbaのところで
やればいいんちゃう?
標準形にならない数字順はやらない。つまり、
if (abcd != dbcd) nop;
でいいのでは?
0125デフォルトの名無しさん
NGNG簡単そうだね。
標準形でなければ、処理せずに飛ばせばいいんだから。
0126デフォルトの名無しさん
NGNGmain(){
int i0,i1,i2,i3;
for(i0=0; i0<=9; i0++)
for(i1=i0; i1<=9; i1++)
for(i2=i1; i2<=9; i2++)
for(i3=i2; i3<=9; i3++)
{
if(i0+i1+i2+i3==10 || i0+i1+i2-i3==10
|| i0+i1-i2+i3==10 || i0+i1-i2-i3==10
|| i0-i1+i2+i3==10 || i0-i1+i2-i3==10
|| i0-i1-i2+i3==10 || -i0+i1+i2+i3==10
|| -i0+i1+i2-i3==10 || -i0+i1-i2+i3==10
|| -i0-i1+i2+i3==10)
printf("%d%d%d%d ",i0,i1,i2,i3);
if(i0+i1+i2*i3==10 || i0+i1-i2*i3==10 || i0-i1+i2*i3==10 || -i0+i1+i2*i3==10 || -i0-i1+i2*i3==10
|| i1+i2+i3*i0==10 || i1+i2-i3*i0==10 || i1-i2+i3*i0==10 || -i1+i2+i3*i0==10 || -i1-i2+i3*i0==10
|| i2+i3+i0*i1==10 || i2+i3-i0*i1==10 || i2-i3+i0*i1==10 || -i2+i3+i0*i1==10 || -i2-i3+i0*i1==10
|| i3+i0+i1*i2==10 || i3+i0-i1*i2==10 || i3-i0+i1*i2==10 || -i3+i0+i1*i2==10 || -i3-i0+i1*i2==10 )
printf("%d%d%d%d ",i0,i1,i2,i3);
}
}
ぶっちゃけこんなんでも良いと思うが。
ちょっと式が多いけど。割り算などまだ足りないし。
表示する時に並び替えた物を一緒に表示するなり、全体をソートしながら表示したり。
式を関数の中で処理して引数の順を入れ替えたり。いろいろできるよ。ってかやらなきゃならんのか
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNG+と*の可換性を考慮して昇順にして第二標準形
A+(a-b)とA-(b-a)を同一視して第三標準形
・・・・
・・・
0129かおりん祭り
NGNG( ^▽^) < こンなのかございまーす♪
http://togoshi.ginza.st/kaorin/kaorin05.html
http://www.togoshi.ginza.st/kaorin/kaorin02.html
http://togoshi.ginza.st/kaorin/kaorin06.html
http://www.togoshi.ginza.st/kaorin/kaorin08.html
http://togoshi.ginza.st/kaorin/kaorin01.html
http://www.togoshi.ginza.st/kaorin/kaorin10.html
http://togoshi.ginza.st/kaorin/kaorin04.html
http://www.togoshi.ginza.st/kaorin/kaorin03.html
http://togoshi.ginza.st/kaorin/kaorin09.html
http://www.togoshi.ginza.st/kaorin/kaorin07.html
0130r
NGNG関数型言語の威力を見せつけるチャンスですよ!
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG2263とおりでファイナルアンサー?
0133デフォルトの名無しさん
NGNG2263通りをここに晒せ
多分違うと思う(勘)
0134デフォルトの名無しさん
NGNG少ないような気がする。
0135デフォルトの名無しさん
NGNG無理。
>>134
多いことはあっても少ないことはない。
できない組合せの数は1853。これは>>59と合ってる。
0136132
NGNG「多いことはあっても少ないことはないと思う」に訂正します。
言い切る自信はない。
0137デフォルトの名無しさん
NGNGhttp://www.amy.hi-ho.ne.jp/odasan/com/programs/number4/number4.html
間違ってたら恥ずかしいな。
0138デフォルトの名無しさん
NGNG順列は5878個。↓足りない分
1,1,4,8 (1+(1/4))*8 1,1,9,9 (1+(1/9))*9
1,2,3,6 (1+(2/3))*6 1,2,8,8 (1+(2/8))*8
1,3,3,5 (1+(3/3))*5 1,3,7,7 (1+(3/7))*7
1,4,4,5 (1+(4/4))*5 1,4,6,6 (1+(4/6))*6
1,5,5,5 (1+(5/5))*5 1,6,4,4 (1+(6/4))*4
1,6,6,5 (1+(6/6))*5 1,7,3,3 (1+(7/3))*3
1,8,8,5 (1+(8/8))*5 1,9,6,4 (1+(9/6))*4
1,9,9,5 (1+(9/9))*5 2,2,9,2 (2+(2*9))/2
2,6,8,5 (2+(6*8))/5 3,4,4,5 (3-(4/4))*5
3,5,5,5 (3-(5/5))*5 3,7,4,8 (3-(7/4))*8
3,7,7,5 (3-(7/7))*5 3,8,8,5 (3-(8/8))*5
3,9,9,5 (3-(9/9))*5 4,2,3,3 (4-(2/3))*3
4,3,3,2 (4+(3/3))*2 4,4,9,4 (4+(4*9))/4
4,6,6,4 (4+(6*6))/4 4,7,7,2 (4+(7/7))*2
4,9,9,2 (4+(9/9))*2 5,5,2,4 (5-(5/2))*4
5,5,9,5 (5+(5*9))/5 6,6,4,3 (6+(6*4))/3
6,6,6,2 (6-(6/6))*2 6,7,2,2 (6+(7*2))/2
6,8,8,7 (6+(8*8))/7 6,9,9,2 (6-(9/9))*2
7,6,3,2 (7-(6/3))*2 7,7,9,7 (7+(7*9))/7
7,8,4,2 (7-(8/4))*2 8,3,2,5 (8-(3*2))*5
8,8,9,8 (8+(8*9))/8 9,8,2,2 (9-(8/2))*2
0140デフォルトの名無しさん
NGNGは入れ換えられる
0141137=139
NGNGこっそり直しました。順列で 5,878個ありました。
http://www.amy.hi-ho.ne.jp/odasan/com/programs/number4/number4.html
0142132
NGNGhttp://airh.zapto.org/n4/
0143デフォルトの名無しさん
NGNG9991が重複しているの?
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGどういう意味でしょうか?
((9*9)/9)+1
((9/9)+9)*1
この二つは同じではないと思いますが…
>>144
そうです。
0147132
NGNG修正した結果、2230とおりになりました。
http://airh.zapto.org/n4/
0148132
NGNG0149デフォルトの名無しさん
NGNG読んで無いので知らんが同じ並びだからこれで一通りじゃ?
0000〜9999のうちの9991というもの(一万分の一)
((9*9)/9)+1
((9/9)+9)*1
計算の違いで別にカウントするの?
0150132
NGNGこの↓ルールで何とおりの式を作れるか?
4個の数字と3個の四則演算子で計算結果を10にする。
ただし, 式を変形して同じになるものと、
以下の2つの形のものは取り除いておく。
○/△ △=1 例) (2*5)/(9-8) ((2*5)*(9-8)と同等なので)
○-△ △=0 例) (3+7)-(0*2) ((3+7)+(0*2)と同等なので)
答: 2235とおり(http://airh.zapto.org/n4/)
>>132に何も書いてなかったですね。すんません。
0151132
NGNG> ○/△ △=1 例) (2*5)/(9-8) ((2*5)*(9-8)と同等なので)
> ○-△ △=0 例) (3+7)-(0*2) ((3+7)+(0*2)と同等なので)
ちなみに↑をしなければ 3278とおりです。
0152デフォルトの名無しさん
NGNG4つの4で遊ぼうよ
http://www.faireal.net/articles/5/27/#d20527
0153デフォルトの名無しさん
NGNG0154132
NGNG((9+9)-7)-1 ((9+9)-1)-7のようなダブリを許してました。
修正した結果、2174(>>151 3161)とおりになりました。
http://airh.zapto.org/n4/
まだまだ完璧じゃないと思うので、誰かチェックしてください。
つか>>84-130あたり話してた人は誰一人やってないの?
0155デフォルトの名無しさん
NGNGあってるかどうかわからんけど。
0156山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG並びを変えない
というルールなら無理
0160158
NGNGスマソ
0161デフォルトの名無しさん
NGNG(4*6+6)/3
0162デフォルトの名無しさん
NGNG4+36/6
46-36
0164デフォルトの名無しさん
NGNGプログラム板なんだからプログラム組んで確かめろ
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGV30
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGなつかしー
リアル厨房の頃やったよ
0171デフォルトの名無しさん
NGNGさくっと実装してくれ
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG二進数(111) + 十進数(3) = 10
0176デフォルトの名無しさん
NGNG3ビットシフト・・・?
0178デフォルトの名無しさん
NGNG2162とおりというのがでてる
http://www.geocities.co.jp/SiliconValley-Oakland/4477/misc/
0179デフォルトの名無しさん
NGNGとかもアリですか?
0180デフォルトの名無しさん
NGNG「とか」って、他に何が並ぶ?
0181デフォルトの名無しさん
NGNGとか
0182デフォルトの名無しさん
NGNGとか
0183デフォルトの名無しさん
NGNGとか
0184デフォルトの名無しさん
NGNG1
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG0189
NGNG0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG「0000」とか入力されたらどうする?
0194デフォルトの名無しさん
NGNG何をどうするの?
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG例外データとして登録しておく。
0197山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG0201山崎 渉
NGNG0202山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
■ このスレッドは過去ログ倉庫に格納されています