Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2011-01-19

12:13

SpiderMonkey でもやってみた。


cand = function(list) {
  for (let i = 1; i < 10; i++) {
    if (list.indexOf(i) < 0) {
      yield i;
    }
  }
};

ans = [
  [
  [_00,_01,_02,_03,_04,_05,_06,_07,_08],
  [_10,_11,_12,_13,_14,_15,_16,_17,_18],
  [_20,_21,_22,_23,_24,_25,_26,_27,_28],
  [_30,_31,_32,_33,_34,_35,_36,_37,_38],
  [_40,_41,_42,_43,_44,_45,_46,_47,_48],
  [_50,_51,_52,_53,_54,_55,_56,_57,_58],
  [_60,_61,_62,_63,_64,_65,_66,_67,_68],
  [_70,_71,_72,_73,_74,_75,_76,_77,_78],
  [_80,_81,_82,_83,_84,_85,_86,_87,_88]
  ]
  for each(_00 in [1])
  for each(_05 in [7])
  for each(_07 in [9])
  for each(_11 in [3])
  for each(_14 in [2])
  for each(_18 in [8])
  for each(_22 in [9])
  for each(_23 in [6])
  for each(_26 in [5])
  for each(_32 in [5])
  for each(_33 in [3])
  for each(_36 in [9])
  for each(_41 in [1])
  for each(_44 in [8])
  for each(_48 in [2])
  for each(_50 in [6])
  for each(_55 in [4])
  for each(_60 in [3])
  for each(_67 in [1])
  for each(_71 in [4])
  for each(_78 in [7])
  for each(_82 in [7])
  for each(_86 in [3])
  for each(_01 in cand([_41,_71,_05,_07,_00,_11,_22]))
  for each(_02 in cand([_05,_07,_00,_01,_11,_32,_22,_82]))
  for each(_03 in cand([_05,_07,_00,_01,_02,_33,_23,_14]))
  for each(_04 in cand([_44,_05,_07,_00,_01,_02,_03,_23,_14]))
  for each(_06 in cand([_04,_05,_07,_00,_01,_02,_03,_26,_86,_18,_36]))
  for each(_08 in cand([_48,_78,_04,_05,_06,_07,_00,_01,_02,_03,_26,_18]))
  for each(_10 in cand([_02,_50,_60,_14,_00,_01,_11,_22,_18]))
  for each(_12 in cand([_02,_14,_00,_01,_11,_10,_32,_22,_82,_18]))
  for each(_13 in cand([_10,_04,_05,_14,_12,_11,_03,_33,_23,_18]))
  for each(_15 in cand([_10,_55,_04,_05,_14,_13,_12,_11,_03,_23,_18]))
  for each(_16 in cand([_06,_15,_07,_13,_12,_11,_10,_26,_86,_18,_08,_14,_36]))
  for each(_17 in cand([_06,_16,_15,_07,_13,_12,_11,_10,_26,_18,_08,_14,_67]))
  for each(_20 in cand([_02,_50,_60,_00,_12,_11,_10,_26,_22,_23,_01]))
  for each(_21 in cand([_02,_41,_71,_00,_12,_11,_10,_26,_22,_23,_20,_01]))
  for each(_24 in cand([_44,_04,_05,_15,_14,_13,_03,_26,_22,_23,_20,_21]))
  for each(_25 in cand([_55,_04,_05,_15,_14,_13,_03,_26,_24,_22,_23,_20,_21]))
  for each(_27 in cand([_18,_08,_17,_16,_06,_07,_67,_26,_24,_25,_22,_23,_20,_21]))
  for each(_28 in cand([_48,_78,_18,_08,_17,_16,_06,_07,_26,_27,_24,_25,_22,_23,_20,_21]))
  for each(_30 in cand([_41,_50,_60,_00,_10,_33,_32,_20,_36]))
  for each(_31 in cand([_41,_50,_71,_21,_01,_11,_30,_33,_32,_36]))
  for each(_34 in cand([_44,_55,_04,_14,_31,_30,_33,_32,_24,_36]))
  for each(_35 in cand([_32,_44,_55,_05,_15,_31,_30,_33,_25,_34,_36]))
  for each(_37 in cand([_48,_17,_07,_67,_27,_31,_30,_33,_32,_35,_34,_36]))
  for each(_38 in cand([_48,_78,_18,_08,_28,_31,_30,_33,_32,_35,_34,_37,_36]))
  for each(_40 in cand([_48,_41,_50,_44,_60,_00,_10,_31,_30,_32,_20]))
  for each(_42 in cand([_48,_40,_41,_50,_44,_12,_02,_31,_30,_32,_22,_82]))
  for each(_43 in cand([_48,_40,_41,_42,_44,_55,_23,_13,_03,_33,_35,_34]))
  for each(_45 in cand([_48,_40,_41,_42,_43,_44,_55,_05,_15,_33,_25,_35,_34]))
  for each(_46 in cand([_48,_38,_40,_41,_42,_43,_44,_45,_16,_06,_26,_86,_37,_36]))
  for each(_47 in cand([_48,_40,_41,_42,_43,_44,_45,_46,_17,_38,_07,_67,_27,_37,_36]))
  for each(_51 in cand([_40,_41,_42,_50,_71,_55,_01,_11,_31,_30,_32,_21]))
  for each(_52 in cand([_40,_41,_51,_50,_55,_12,_02,_31,_30,_32,_22,_42,_82]))
  for each(_53 in cand([_43,_52,_51,_50,_44,_45,_55,_23,_13,_03,_33,_35,_34]))
  for each(_54 in cand([_43,_53,_52,_51,_50,_44,_45,_55,_04,_14,_33,_24,_35,_34]))
  for each(_56 in cand([_48,_38,_53,_52,_51,_50,_55,_54,_16,_06,_46,_26,_86,_47,_37,_36]))
  for each(_57 in cand([_48,_46,_53,_52,_51,_50,_56,_55,_54,_17,_38,_07,_67,_27,_47,_37,_36]))
  for each(_58 in cand([_48,_78,_18,_53,_52,_51,_50,_57,_56,_55,_54,_38,_46,_28,_47,_08,_37,_36]))
  for each(_61 in cand([_01,_41,_51,_71,_60,_67,_11,_31,_82,_21]))
  for each(_62 in cand([_52,_42,_71,_60,_61,_12,_02,_32,_22,_82,_67]))
  for each(_63 in cand([_53,_43,_62,_60,_61,_13,_67,_03,_33,_23]))
  for each(_64 in cand([_61,_62,_44,_54,_04,_63,_60,_14,_67,_24,_34]))
  for each(_65 in cand([_60,_05,_45,_55,_62,_63,_15,_61,_67,_64,_25,_35]))
  for each(_66 in cand([_06,_78,_63,_56,_46,_62,_16,_60,_61,_67,_64,_65,_26,_86,_36]))
  for each(_68 in cand([_48,_58,_64,_38,_78,_62,_63,_60,_61,_66,_67,_28,_65,_86,_08,_18]))
  for each(_70 in cand([_78,_40,_50,_71,_62,_60,_61,_00,_82,_10,_30,_20]))
  for each(_72 in cand([_78,_52,_42,_71,_70,_62,_60,_61,_12,_02,_32,_22,_82]))
  for each(_73 in cand([_43,_78,_53,_65,_71,_70,_72,_63,_13,_64,_03,_33,_23]))
  for each(_74 in cand([_78,_44,_71,_70,_73,_72,_04,_63,_14,_64,_65,_24,_54,_34]))
  for each(_75 in cand([_78,_05,_74,_71,_45,_73,_72,_63,_15,_55,_64,_65,_70,_25,_35]))
  for each(_76 in cand([_46,_78,_75,_74,_71,_56,_73,_72,_16,_06,_66,_67,_70,_26,_86,_68,_36]))
  for each(_77 in cand([_78,_75,_74,_76,_71,_70,_73,_47,_17,_07,_66,_67,_57,_27,_86,_72,_68,_37]))
  for each(_80 in cand([_40,_50,_71,_70,_72,_62,_60,_61,_00,_82,_10,_30,_86,_20]))
  for each(_81 in cand([_41,_51,_71,_70,_72,_62,_60,_61,_01,_11,_31,_86,_80,_82,_21]))
  for each(_83 in cand([_43,_86,_75,_74,_65,_73,_23,_63,_53,_13,_64,_03,_33,_80,_81,_82]))
  for each(_84 in cand([_34,_75,_74,_44,_73,_54,_04,_63,_14,_64,_65,_86,_24,_80,_81,_82,_83]))
  for each(_85 in cand([_35,_05,_75,_74,_45,_73,_63,_15,_55,_64,_65,_84,_86,_25,_80,_81,_82,_83]))
  for each(_87 in cand([_81,_78,_77,_76,_57,_68,_47,_17,_07,_66,_82,_27,_84,_85,_86,_80,_67,_37,_83]))
  for each(_88 in cand([_48,_58,_78,_18,_08,_77,_76,_38,_68,_66,_67,_28,_84,_85,_86,_87,_80,_81,_82,_83]))
]
print(ans)

仮想環境だったが0.7秒ぐらいで終了。print(ans.join('\n')) ってしても一行でプリントされるっぽい?


配列内包表記使ったのも SpiderMonkey 使ったのも初めて。

js -v 170

ってやらないと内包表記とか使えないらしい。JS 的には (3 in [3]) は false なのに、内包表記だと for each(x in [3]) で 3 が出てくる。直感的とは言えない。


Firefox でやるとスクリプト実行時間制限に引っかかる。なんで?

トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20110119
 |