切符の数字で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その標準方法を決めるのが、大変そう
■ このスレッドは過去ログ倉庫に格納されています