Hatena::Groupuwsc

CX's UWSC Diary

Windows 自動化ツール「UWSC」を使って何が出来るかを探求する日記です。構文をマスターしたい方はこちらをどうぞ→UWSC 基礎文法最速マスター
こくばん.in」投稿サンプル
アインシュタイン マリオとクッパ 千円札(見本) 猫
eピアノ」「Google Moog」自動演奏サンプル
eピアノ Google Moog
はてなロクロ」投稿サンプル
マリオ テトリス デフォルトさん はてなロゴ 全自動マリオ 3Dプロッタ
はてなハイク」投稿サンプル
デフォルトさん カラーパレット カラーパレット マリオ ルイージ カラーパレット 日本地図
 | 

2009-02-05「超難問クイズ」を力技で解いてみる

「超難問クイズ」を力技で解いてみる

19:17 | 「超難問クイズ」を力技で解いてみる - CX's UWSC Diary を含むブックマーク はてなブックマーク - 「超難問クイズ」を力技で解いてみる - CX's UWSC Diary

  • 人力検索はてな質問

【超難問クイズ】 Windows のアクセサリにある電卓を使って次の数になるべく近い数を作ってください。 0.99984774153108811295981076868 ただし、ボタンの押下回数は10回以内とします。

  • ソース(cos(0)~cos(9) を指定回数繰り返すプログラム)
// ---------------------------------------------------------
// File : CalcCosRepeat.uws
// ---------------------------------------------------------
Option Explicit

Public g_nWait = 100 // キー押下時のウェイト(ms)

Main()

Procedure Main()
    Dim nCalcID
    nCalcID = Exec("calc") // 「電卓」を起動
    ACW( nCalcID )
    
    // 希望する値
    SendStr( nCalcID, "0.99984774153108811295981076868" )
    CalcMS() // [MS](メモリ保存)

    Dim strResult
    Dim i
    For i = 0 To 9
        Dim j
        For j = 1 To 9
            CalcCosRepeat( nCalcID, i, j )  // [Cos] 繰り返し
            Sleep(0.5) // 計算が完了するまで少し待つ(ウェイトを入れないと正しい結果が取得できない為)
            Print "Cos(" + i + ")[" + j + "回目] = [" + GetCalcResult( nCalcID ) + "]"
            CalcMinus()   // [-]
            CalcMR()      // [MR](メモリ読込)
            CalcEnter()   // [Enter]
            Print "誤差 = [" + GetCalcResult( nCalcID ) + "]"
        Next
    Next
Fend

Procedure CalcCosRepeat( nCalcID, nBase, nTimes )
    Dim nKey
    nKey = ASC("0") + nBase  // "0""9" の仮想キー番号を取得
    KBD( nKey, CLICK, g_nWait )
    Dim i
    For i = 1 To nTimes
        CalcCos() // [Cos] ボタン押下
    Next
Fend

Procedure CalcMS()
    KBD( VK_CTRL, DOWN, g_nWait * 2 )
    KBD( VK_M, CLICK, g_nWait )        // [MS]
    KBD( VK_CTRL, UP, g_nWait )
Fend

Procedure CalcMR()
    KBD( VK_CTRL, DOWN, g_nWait * 2 )
    KBD( VK_R, CLICK, g_nWait )        // [MR]
    KBD( VK_CTRL, UP, g_nWait )
Fend

Procedure CalcCos()
    KBD( VK_O, CLICK, g_nWait )        // [Cos]
Fend

Procedure CalcMinus()
    KBD( VK_SUBTRACT, CLICK, g_nWait ) // [-]
Fend

Procedure CalcEnter()
    KBD( VK_RETURN, CLICK, g_nWait )   // [Enter]
Fend

Function GetCalcResult( nCalcID )
    Dim strResult
    Ifb KindOfOs() >= 13
       strResult = GetStr( nCalcID, 1, STR_EDIT )   // XP, Vista の場合(エデット)
    Else 
       strResult = GetStr( nCalcID, 1, STR_STATIC ) // Windows 2000 以前(スタテック)
    EndIf
    Result = strResult
Fend
  • 実行結果(cos(0)~cos(9) の計算結果(1~10回繰り返した結果))
Cos(x)回数算出結果誤差
011.0.00015225846891188704018923132
020.99984769515639123915701155881391-4.6374696873802799209866085148301e-8
030.999847741545211785392041191112521.4123672432230422432516537819709e-11
040.99984774153108381151654435147637-4.3014432664172036269755807854181e-15
050.999847741531088114269839322715961.3100285540359596407147612236031e-18
060.99984774153108811295941179217213-3.9897650787352580930756519440539e-22
070.999847741531088112959810890190321.2151032198189819565655865304075e-25
080.99984774153108811295981076864279-3.7206908524515403762478481564351e-29
090.99984774153108811295981076867981-1.8893021736976450917675131476231e-31
110.99984769515639123915701155881391-4.6374696873802799209866085148307e-8
120.999847741545211785392041191112521.4123672432230422432516537817737e-11
130.99984774153108381151654435147637-4.3014432664172036269755849354513e-15
140.999847741531088114269839322715961.3100285540359596407327121236229e-18
150.99984774153108811295941179217213-3.9897650787352580288359567800538e-22
160.999847741531088112959810890190321.2151032198189899493589840995662e-25
170.99984774153108811295981076864279-3.7206908524340016733719340524161e-29
180.99984774153108811295981076867981-1.8893021091955198137746421665617e-31
190.9998477415310881129598107686798-2.0020425261209577616291347590928e-31
210.99939082701909573000624344004393-4.5691451199238295356732863607004e-4
220.999847880655160093004392114371671.3912407198004458134569167460743e-7
230.99984774148871709741036596005169-4.2371015549444808628311143615313e-11
240.999847741531101017289077522097811.2904329266753417813834620219111e-14
250.99984774153108810902972526874658-3.9300854999334170994668953861579e-18
260.999847741531088112961007698153431.1969294734283927624196263685053e-21
270.99984774153108811295981040414825-3.6453175170652811086427693767663e-25
280.999847741531088112959810768790821.1081991771782969667851863946763e-28
290.99984774153108811295981076867977-2.3401261439160944575382646275582e-31
310.99862953475457387378449205843944-0.0012182067765142391753187102405634
320.99984811231676500055048185617623.7078567688759067108749620062668e-7
330.9998477414181632446952544162059-1.1292486826455635247410181217624e-10
340.999847741531122504858695955396663.4391898885186716657824789690017e-14
350.99984774153108810248556601486094-1.047424475381905789487914109257e-17
360.999847741531088112963000758378513.1899896985120792460987815269571e-21
370.99984774153108811295980979715063-9.715293669391006782084435202731e-25
380.999847741531088112959810768975682.9568442918487660167971404297243e-28
390.99984774153108811295981076867971-2.9031413299362279248467210670146e-31
410.99756405025982424761316268064426-0.002283691271263865346648088035745
420.999848436247803927980871899622476.9471671581502106113094247138992e-7
430.99984774131950818630221728355612-2.1157992665759348512388267834222e-10
440.999847741531152550807339063139516.4437847528294459510898964127856e-14
450.99984774153108809333490466291845-1.9624906105761552092107806973217e-17
460.999847741531088112965787643364995.9768746849888774923065962426455e-21
470.99984774153108811295980894838926-1.8202907437548945822204002579567e-24
480.999847741531088112959810769234185.5417944361550204857931837831291e-28
490.99984774153108811295981076867963-3.6904023277388900215372516903784e-31
510.99619469809174553229501040247389-0.003653043439342580664800366206112
520.999848852053646617120445509736921.1105225585041606347410569209077e-6
530.99984774119287208190248525818872-3.3821603105732551049127950431229e-10
540.999847741531191118539705815190181.0300557989504651017941033345553e-13
550.99984774153108808158888651609357-3.1370924252586425172694666392144e-17
560.999847741531088112969364958748579.5541900685727480119886972667313e-21
570.99984774153108811295980785889789-2.9097821095659621941383897247566e-24
580.999847741531088112959810769565998.8599011973862291814037134944521e-28
590.99984774153108811295981076867953-4.7009502700248779052993366122328e-31
610.99452189536827333692269194498057-0.0053258461628147760371188236994296
620.999849359227735782596874374746651.6176966476696370636060666514535e-6
630.99984774103840917168839983257556-4.9267894127141093610443694212939e-10
640.999847741531238161081081572866651.5004812127080418665045876847285e-13
650.99984774153108806726181798590488-4.5697992782775119922801331992107e-17
660.999847741531088112973728347431791.3917578751788658312057742526463e-20
670.99984774153108811295980653000351-4.2386764860184160186754408920332e-24
680.999847741531088112959810769970711.2907123189608479314290995742591e-27
690.99984774153108811295981076867941-5.9335543069607095752074753551106e-31
710.99254615164132203498006158933058-0.0073015898897660779797491793494159
720.999849957152204088325884412470832.2156211159753660736437908349227e-6
730.99984774085630758868150824219112-6.7478052427830252648887621263219e-10
740.999847741531293621134500725806882.0550817468995712687863869787797e-13
750.99984774153108805037114918301491-6.2588661585665088643389525000997e-17
760.999847741531088112978872494886041.9061726206041635342797170415214e-20
770.9998477415310881129598049633247-5.8053553037671613602968612468325e-24
780.999847741531088112959810770447851.7678530968663158527143010473838e-27
790.99984774153108811295981076867926-7.3867131730006996400198257880755e-31
810.99026806874157031508377486734485-0.0095796727895177978760359013351492
820.999850645098626698766395018525882.9035675385858065842498458823113e-6
830.99984774064678912979543845364273-8.8429898316437231503726968127563e-10
840.999847741531357431150470794928712.6931819066002624870572478873613e-13
850.99984774153108803093745268236551-8.2022358086314492095786118499177e-17
860.999847741531088112984791135618812.4980366938813325739638345143496e-20
870.99984774153108811295980316076963-7.6079103720967358001118835222312e-24
880.999847741531088112959810770996832.3168313033605324272935527724823e-27
890.99984774153108811295981076867909-9.0586569406282925040946921244314e-31
910.98768834059513772619004024769344-0.012159400935950386769770520986563
920.999851422228908489173484963008133.6806978203762136741943281251221e-6
930.9998477404101089859311442241136-1.1209791270286665445664044197411e-9
940.999847741531429513409173459769313.4140044936269108931043938173965e-13
950.99984774153108800898439848839615-1.0397541228028385416670259120544e-16
960.999847741531088112991477060798143.1666292118144473092168138348137e-20
970.9998477415310881129598011245338-9.6441462009999372079723473745638e-24
980.999847741531088112959810771616982.9369782897083157171567337056762e-27
990.99984774153108811295981076867891-1.0947349202673135476638977736664e-30
  • 実行結果(cos(0)~cos(99) の計算結果(8回繰り返した結果))
Cos(x)回数算出結果誤差
080.99984774153108811295981076864279-3.7206908524515403762478481564351e-29
180.99984774153108811295981076867981-1.8893021091955198137746421665617e-31
280.999847741531088112959810768790821.1081991771782969667851863946763e-28
380.999847741531088112959810768975682.9568442918487660167971404297243e-28
480.999847741531088112959810769234185.5417944361550204857931837831291e-28
580.999847741531088112959810769565998.8599011973862291814037134944521e-28
680.999847741531088112959810769970711.2907123189608479314290995742591e-27
780.999847741531088112959810770447851.7678530968663158527143010473838e-27
880.999847741531088112959810770996832.3168313033605324272935527724823e-27
980.999847741531088112959810771616982.9369782897083157171567337056762e-27
1080.999847741531088112959810772307543.6275387222592794204740372075271e-27
1180.999847741531088112959810773067674.3876715016314142031303595023739e-27
1280.999847741531088112959810773896455.2164507862878105883560827571689e-27
1380.999847741531088112959810774792876.1128671192550190418645764036833e-27
1480.999847741531088112959810775755837.0758286565804944083573771182642e-27
1580.999847741531088112959810776784168.1041624961565838351436987538904e-27
1680.999847741531088112959810777876629.1966161051249151260432399141343e-27
1780.999847741531088112959810779031861.0351858844322604453265668358353e-26
1880.999847741531088112959810780248481.1568483587695999742369770116442e-26
1980.999847741531088112959810781525011.2845008434989310042588452559657e-26
2080.999847741531088112959810782859881.4179878515371410556412489678595e-26
2180.999847741531088112959810784251471.5571467879978427027735703598464e-26
2280.999847741531088112959810785698081.7018081480998956586528689901902e-26
2380.999847741531088112959810787197961.8517957234937782797329822443107e-26
2480.999847741531088112959810788749272.0069268167529608293716965294238e-26
2580.999847741531088112959810790350122.1670124637710114261612585410839e-26
2680.999847741531088112959810791998582.3318576637936238459827687383752e-26
2780.999847741531088112959810793692622.5012616168091218045356167461699e-26
2880.999847741531088112959810795430182.6750179680027304704984680626378e-26
2980.999847741531088112959810797209152.852915058984990861173781022362e-26
3080.999847741531088112959810799027363.0347361854822410635429160879383e-26
3180.99984774153108811295981080088263.2202598611878573514530080055431e-26
3280.99984774153108811295981080277263.4092600874367225725278854337821e-26
3380.999847741531088112959810804695073.6015066283846841992638866619477e-26
3480.999847741531088112959810806647653.7967652913666447806632177232535e-26
3580.999847741531088112959810808627983.9947982120713540940664535051055e-26
3680.999847741531088112959810810633644.1953641442090846747636626981987e-26
3780.999847741531088112959810812662194.3982187533005696967743850968761e-26
3880.999847741531088112959810814711154.6031149142475536506459996285041e-26
3980.999847741531088112959810816778034.8098030123065935083857931587693e-26
4080.999847741531088112959810818860315.0180312471110639537550883949414e-26
4180.999847741531088112959810820955465.2275459393671038819664348520325e-26
4280.999847741531088112959810823060925.4380918398509636269374289775241e-26
4380.999847741531088112959810825174125.6494124403316320004493498202936e-26
4480.99984774153108811295981082729255.8612502860402352329218365147e-26
4580.999847741531088112959810829413476.0733472893057271850978385688222e-26
4680.999847741531088112959810831534456.285445043974901178207160837347e-26
4780.999847741531088112959810833652856.4972851402337967539266624094294e-26
4880.999847741531088112959810835766096.708609479446906773433103001103e-26
4980.999847741531088112959810837871616.9191605886324891788651665614349e-26
5080.999847741531088112959810839966827.1286819341783814799829673707394e-26
5180.999847741531088112959810842049187.3369182344502313424397946183639e-26
5280.999847741531088112959810844116167.5436157708609705548939558222167e-26
5380.999847741531088112959810846165237.7485226970589371949914210031785e-26
5480.999847741531088112959810848193897.9513893458551836084499584256762e-26
5580.999847741531088112959810850199698.1519685334909843644887089342829e-26
5680.999847741531088112959810852180168.3500158609155692765408306191933e-26
5780.99984774153108811295981085413298.5452900116433457071504716431979e-26
5880.999847741531088112959810856055538.7375530459129241936813952981019e-26
5980.999847741531088112959810857945718.9265706907029283651198239226881e-26
6080.999847741531088112959810859801139.112112625311039210920451631805e-26
6180.999847741531088112959810861619539.2939527621131285569664294822093e-26
6280.99984774153108811295981086339879.4718695221872006408895343146944e-26
6380.999847741531088112959810865136469.6456461054340840025486404152384e-26
6480.999847741531088112959810866830719.8150707548970139583638708477627e-26
6580.999847741531088112959810868479379.9799370149292419219080773019473e-26
6680.999847741531088112959810870080441.0140043982916054141365857470188e-25
6780.999847741531088112959810871631971.0295196554230009517800267774697e-25
6880.999847741531088112959810873132061.0445205660125702231473307407967e-25
6980.999847741531088112959810874578881.0589888498282690842404062551047e-25
7080.999847741531088112959810875970691.0729068755711682308744550579011e-25
7180.999847741531088112959810877305771.0862576823759221690654825345401e-25
7280.99984774153108811295981087858251.0990250004935364336758468913644e-25
7380.999847741531088112959810879799331.1111932711326145399733114993441e-25
7480.999847741531088112959810880954771.1227476654335489781081675853025e-25
7580.999847741531088112959810882047411.1336741025540120929907142174047e-25
7680.999847741531088112959810883075931.1439592668397455404557593066459e-25
7780.999847741531088112959810884039061.1535906240671773650227433553229e-25
7880.999847741531088112959810884935641.1625564367290222334786080082384e-25
7980.999847741531088112959810885764581.1708457783503445036003713289484e-25
8080.999847741531088112959810886524851.1784485468158286268089642286723e-25
8180.999847741531088112959810887215551.1853554766914766957137144374883e-25
8280.999847741531088112959810887835821.1915581505253492085034885427412e-25
8380.99984774153108811295981088838491.1970490091152998452937489650334e-25
8480.999847741531088112959810888862141.2018213607295952914252132246066e-25
8580.999847741531088112959810889266941.2058693892682425428280304804772e-25
8680.999847741531088112959810889598821.2091881613587029017224008001414e-25
8780.999847741531088112959810889857361.2117736323729155545664178779933e-25
8880.999847741531088112959810890042271.21362265136088026795637406209e-25
8980.99984774153108811295981089015331.2147329648955886779430610678874e-25
9080.999847741531088112959810890190321.2151032198189819565655865304075e-25
9180.99984774153108811295981089015331.2147329648954471444099447174584e-25
9280.999847741531088112959810890042271.2136226513611092691018763172482e-25
9380.999847741531088112959810889857361.2117736323729113791158148800548e-25
9480.999847741531088112959810889598821.2091881613587403732101725174853e-25
9580.999847741531088112959810889266941.2058693892681388333491434772743e-25
9680.999847741531088112959810888862141.2018213607294444147476355035698e-25
9780.99984774153108811295981088838491.1970490091153898321547808024335e-25
9880.999847741531088112959810887835821.1915581505252661703494351269287e-25
9980.999847741531088112959810887215551.1853554766914634042808047921005e-25

imo758imo7582009/02/07 20:45ゴールの数は x = cos x の解に非常に近いので
cosの累積でゴールの数を生み出そうと思ったら
3回ボタンを押した時点で | x - cos 1 | 並に誤差が小さいものでないとほぼ無理でしょう
あれ以上に改善を目指すなら、まったく違った攻略法が必要そうです

cx20cx202009/02/07 21:43>まったく違った攻略法が必要そう
そうなんですよね・・・
ダメと思いつつ、取りあえずプログラムを書いてしまったので実行するだけしてみました(苦笑)
当初、他の関数ボタンも組み合わせるようにしようかとも思いましたがケースが多くなりすぎるのでやめました。

 |