有哪些變態的24點演算法?


四個 0,用 (0!+0!+0!+0!)! 的方法得到 24 點簡直弱爆了,程序員一般都這麼玩:

"0"/(("0"+"0")/"0")

C 語言中有效,因為字元 0 的 ASCII 值為 48。

那能不能再給力一點?

@LiTuX 提出了用兩個 0 的方法,當然了,用四個 0 也是可以的啦:

"0"&>&>"0"/"0"+0

不過,這個答案看上去有點取巧,因為最後湊了一個 0。

那能不能再給力一點呢?

好吧,下面的表達式,拿走不謝:

-~-~-~-~-~-~0-~-~-~-~-~-~0-~-~-~-~-~-~0-~-~-~-~-~-~0


2 3 10 10

2^10-10^3=24

題本身有常規解法,只是這個解法有點新穎。


我一個高中同學做過 5,5,5,1。

是用5*(5-1/5)。印象頗深。


曾經閑著無聊寫過個暴力計算24點的代碼。然後測試了兩個經典的演算法。

還有上面說的10 10 4 4

當然運算只有加減乘除括弧,如果再有乘方開方還要搞個高精度估計就Hold不住了,上面答的cos和階乘什麼的,我選擇狗帶。


((W")!+(X")!+(Y")!+(Z")!)!=24


##### 2016.01.27 更新 #####

@張樂添 都上 Python 了,竟然還需要 0?來看看我們無中生有 XD:

len([{},{},{}]) &<&< len([{},{},{}])

##### 原答案 @2016.01.19 #####

用四個 0 才湊出 24 點的弱爆了!!我只需要兩個 XD:

"0"&>&>(!0)

不信試試:

# cat foo.c
int main(void)
{
return "0"&>&>(!0);
}
# ./foo || echo $?
24


多圖,轉一篇喪心病狂花式算!


-~x = x + 1

然後可以得到一個只用1個數字的二十四點演算法?


任何四個數a, b, c, d

(a"! + b"! + c"! + d"!)!
= (0! + 0! + 0! + 0!)!
= (1 + 1 + 1 + 1)!
= 4!
= 24

那個"是求導,常數求導是0,算是偏方吧,不嚴謹,圖一樂- -"


原來聽過一個 四個0讓你算。

有個很巧妙的是 後一天00:00

剛好又是前一天的24:00

真正意義上的24點


1 7 K K

答案在下面

以前用計算器隨手摁出來的隨機數

也不是太難

其實想找找這種東西就開計算器的隨機數,四個一組隨便拼

(13*13-1)/7=24


「數學24遊戲」據說是由華人孫士傑先生髮明,他在1986年開始構思,而在1988年正式面世於美國,並且迅速風行全美。但早在1979年1月由毛之價、徐方瞿先生整理定稿,由少年兒童出版社出版的《有趣的數學》中的「看誰算得快」也是談論這類24遊戲,其基本原理、構思等,都和孫士傑先生所發明的一樣,而且除了四則運算以外,還可使用乘方、開方甚至對數等運算方法的。

現在的「數學24遊戲」玩法很簡單,由1至10之間的整數中,任意選4個數字(可以重覆),再利用加、減、乘、除四則運算,計算出所指定的答案「24」,因此同一組數字可以有不同的方法(算式)作計算。一般來說,可以利用撲克牌或UNO牌作為抽選數字的工具,當然也可以自制數字卡,那便可以更有特色。 數學24遊戲」流行於世界各地,成為一班朋友聚會時的娛樂。因為它的玩法簡單,即使只得一人也可以自我娛樂一番,在交通擠塞時,單看車牌也可以作為解悶的方法。而這個普遍性當然也為推動數學發揮一定的效用。

好了說了這麼多,該不會算的還是不會算,終極24點演算法計算器在此終極24點解決器


當初自己偶然推的一個[2,2,2,6]的

2^{log_26+2}\
=2^{log_26 + log_24}\
=2^{log_224}\
=24


不扯超出四則運算的,來玩玩:

3 3 8 8

5 5 5 1

10 10 4 4

=======

Ans:

3 3 8 8:8/(3-8/3)

5 5 5 1:5*(5-1/5)

(原理類似)

10 10 4 4: (10*10-4)/4

(數字太大難想到)

=======

updating...


(11x11-1)/5

(11x13+1)/6

拿撲克牌玩的時候


我以前比較擅長大數減(除)小數,連加,2X12這種野路子,而我爸總是用38和46,然後每次我都是輸的多贏的少。

不過有時候還是很有用的,比如257K,這個你用3X8和4X6都不那麼容易,但是曲線救國就很簡單了,(5*7+K)/2。同理357K就是(5*K+7)/3,而457K就是(7*K+5)/4。

(註:實際上457K是個很簡單的3X8)


看到很多神級演算法…我有一個小疑問…是否根號、lg、ln、log這些算使用了一個數字了呢


function lop(j)

{

if(j&>0)

{

var ss = lop(j-1);

var px = "";

var oo = "$1"+j+"$2";

for(var k=0; k&<=j; k++)

{

var re = new RegExp("(\d{"+k+"})(.*?;)","g");

px += ss.replace(re,oo);

}

return px;

}

else

return "0;";

}

var gt = lop(3).slice(0,-1).split(";");

for(var i=0; i&

gt[i] = gt[i].split("");

var ot = [];

var op = ["+","-","*","/"];

for(var x=0; x&<4; x++)

for(var y=0; y&<4; y++)

for(var z=0; z&<4; z++)

{

ot[ot.length] = "( (a"+op[x]+"b)"+op[y]+"c) "+op[z]+"d";

ot[ot.length] = "( a"+op[x]+"(b"+op[y]+"c)) "+op[z]+"d";

ot[ot.length] = "a"+op[x]+"( (b"+op[y]+"c)"+op[z]+"d) ";

ot[ot.length] = "a"+op[x]+"( b"+op[y]+"(c"+op[z]+"d)) ";

ot[ot.length] = "( a"+op[x]+"b) "+op[y]+"(c"+op[z]+"d)";

}

///////////////////////////////////////////////////////////////

var ggcs;

function ggcsclass()

{

this.pjys = 0;

this.zq = 0;

this.cw = 0;

this.hl = 0;

this.gx();

}

function ggcsclass.prototype.gx()

{

k_pjys.innerText = this.zq==0?0:Math.round(this.pjys/this.zq*100)/100;

k_zq.innerText = this.zq;

k_cw.innerText = this.cw;

k_hl.innerText = this.hl;

}

function ggcsclass.prototype.phl()

{

this.hl++;

this.gx();

k_jg.innerText = "此題被忽略!!";

}

function ggcsclass.prototype.pcw()

{

this.cw++;

this.gx();

k_jg.innerText = "錯誤!!";

}

function ggcsclass.prototype.pzq()

{

var d = jcsl.endDate();

this.pjys += d/1000;

this.zq++;

this.gx();

k_jg.innerText = "正確!用時"+Math.round(d/10)/100+"秒!";

}

window.onload = function()

{

ggcs = new ggcsclass();

}

///////////////////////////////////////////////////////////////

var jcsl=null;

function jclass()

{

this.xpa = [];

this.ssjg = "";

this.wx = 1E-10;

this.date = null;

}

function jclass.prototype.rnd()

{

for(var ii=0; ii&<4; ii++)

this.xpa[ii] = Math.floor(Math.random()*10)+1;

}

function jclass.prototype.fapai()

{

for(var ii=0; ii&<4; ii++)

document.getElementById("pk"+ii).innerText = this.xpa[ii];

this.date = new Date();

}

function jclass.prototype.endDate()

{

return new Date()-this.date;

}

function jclass.prototype.jw()

{

var a,b,c,d;

this.ssjg= "";

for(var i=0; i&

{

a=this.xpa[gt[i][0]]-0;

b=this.xpa[gt[i][1]]-0;

c=this.xpa[gt[i][2]]-0;

d=this.xpa[gt[i][3]]-0;

for(var h=0; h&

if(Math.abs(eval(ot[h])-24)&<=this.wx)

this.jcf(ot[h].replace("a",a).replace("b",b).replace("c",c).replace("d",d));

}

}

function jclass.prototype.jcf(t)

{

var str = t;

var zz1 = t.replace(/[()]/g,"");

var zz2 = t.replace(/[()] /g,"");

var zz3 = t.replace(/[()](?! )/g,"");

if(Math.abs(eval(zz1)-24)&<=this.wx)

str = zz1;

else if(Math.abs(eval(zz2)-24)&<=this.wx)

str = zz2;

else if(Math.abs(eval(zz3)-24)&<=this.wx)

str = zz3;

var res = str.replace(/ /g,"")+"=24
";

if(this.ssjg.indexOf(res)==-1)

this.ssjg += res;

}

function jclass.prototype.scda()

{

sskgxx.innerText = "全部答案:
"+this.ssjg;

}

function jclass.prototype.gx(ss)

{

var sw1 = ss.match(/(/g), sw2 = ss.match(/)/g);

sw1 = (sw1==null)?0:sw1.length;

sw2 = (sw2==null)?0:sw2.length;

if(sw1!=sw2)

return "左右括弧個數不一樣";

if(!/^(*(d+))*[+-*/](*(d+))*[+-*/](*(d+))*[+-*/](*(d+))*$/.test(ss))

return "算術表達式格式不正確";

var str = "#"+RegExp.$1+"|#"+RegExp.$2+"|#"+RegExp.$3+"|#"+RegExp.$4+"|";

for(var ii=0; ii&<4; ii++)

{

var lok = "#"+this.xpa[ii]+"|";

if(str.indexOf(lok)!=-1)

str = str.replace(lok,"");

else

return "算術表達式中數字不對";

}

return "yes";

}

//////////////////////////////////////////////////////////////

function fpaaSystem()

{

if(jcsl!=null)

ggcs.phl();

jcsl = new jclass();

do {

jcsl.rnd();

jcsl.jw();

} while(jcsl.ssjg=="");

k_jg.innerText = "";

sskgxx.innerText = "";

gstext.value = "";

jcsl.fapai();

}

function fpaaInput()

{

var ins = prompt("請輸入四個數字(如: 5,4,7,10)","");

if(ins==null) return;

if(!/^d{1,2},d{1,2},d{1,2},d{1,2}$/.test(ins)) { alert("輸入的內容不正確!");return; }

var vf = jcsl!=null;

jcsl = new jclass();

jcsl.xpa = ins.split(",");

jcsl.jw();

if(jcsl.ssjg=="") { alert("此題無解!!!");return; }

if(vf)

ggcs.phl();

k_jg.innerText = "";

sskgxx.innerText = "";

gstext.value = "";

jcsl.fapai();

}

function ckda()

{

if(jcsl==null) return;

ggcs.phl();

jcsl.scda();

jcsl=null;

}

function okaa()

{

if(jcsl==null) return;

var gs = gstext.value;

var str = jcsl.gx(gs);

if(str!="yes")

{

alert("算式錯誤:"+str+"!");

return;

}

if(Math.abs(eval(gs)-24)&<=jcsl.wx)

ggcs.pzq();

else

ggcs.pcw();

jcsl.scda();

jcsl=null;

}

function tocs(n)

{

if(jcsl==null) return;

gstext.value+=jcsl.xpa[n];

}


話不多說,設計汪請點贊,謝謝!


2的10次方減10的3次方等於24


推薦閱讀:

你和龍之谷有哪些故事?
09的推推影魔為何那麼叼?!真的是本人錄得么-_-||?
《魔獸世界》還能再繼續風靡多久?
劍網三中有哪些文化元素?
有一個網癮少女做女朋友是什麼體驗?

TAG:遊戲 | 數學 | 智商 |