1/66 >> First Last Hack the Cell
1/66 >> First Last Hack the Cell
bitslice ã¨ã¯ Hack the Cell '09 ã«åå ãã¦ç¥ã£ããCellã«éããä¸è¬çã«ä½¿ãããããæ¼ç®ã®é«éåææ³ã«ã¤ãã¦ç´¹ä»ãã¾ãã Bitslice ã¨å¼ã°ããææ³ã§ã¯ããããé ã90度å転ãã¾ããè¨èã§èª¬æãããããã³ã¼ããè¦ãã»ããæ©ãã®ã§ãå転ãããã³ã¼ãã®ä¾ãè¦ã¦ãã ãã int x[32], y[32]; // x ãå ã®ãã¼ã¿ãy ãå転å¾ã®ãã¼ã¿. for (int i = 0; i < 32; ++i) { int t = 0; for (int j = 0; j < 32; ++j) t |= ((x[j] >> i) & 1) << j; // x[j] ã® i ãããç®ã y[i] = t; // y[i] ã® j ãããç®ã«ãã } ãã®å¤æããããã¨ã§ãy[0] ã«ã¯ x[0] - x[31] ã®æä¸ä½ããããã y[1] ã«ã¯ 2çªç®ã®ããã
Hack the Cell '09 ã«åæ¦ãã¦ãã¾ãããFixstars社ããã®çµæçºè¡¨ãå¾ ã£ã¦ããæç¸¾å ±åããããã¨æã£ã¦ããã®ã§ãããä»ã®åå è ã®çãããã©ãã©ãã¨ã¹ã³ã¢ãç´ æ´ããããã¯ããã¯ãæ«é²ããã¦ããã®ã§ãäºå®ãååããã¦ç§ã®ã¹ã³ã¢ã¨ã½ã¼ã¹ã³ã¼ããå ¬éãã¾ããï¼ä¸èº«ã«é¢ãã¦ã¯ã¾ãå¥ã®è¨äºã«æ¸ãã¾ãï¼ æåºç©ã¨ã¹ã³ã¢ ã½ã¼ã¹ã³ã¼ã (試è¡é¯èª¤ã®è·¡ãæ´çããã¦ãã¾ãã) ã¹ã³ã¢ ORIGNAL: sum=3c927c56, 294030647 ticks MINE: sum=3c927c56, 4464381 ticks ORIGNAL: sum=2e987a4d, 424155603 ticks MINE: sum=2e987a4d, 6440068 ticks ORIGNAL: sum=ef1b6aef, 312102737 ticks MINE: sum=ef1b6aef,
æ®éã«é ããããããè©°ãã¦ãã£ããæ´æ°å¦çã¯ãããªæãã«ãªãã¾ãã for (; count != 0; count -= 1) { <%= gen_update(0, 3, 4, 12, 12, "mask1") %> <%= gen_update(1, 4, 0, 12, 29, "mask2") %> <%= gen_update(2, 0, 1, 29, 29, "mask2") %> <%= gen_update(3, 1, 2, 29, 29, "mask2") %> <%= gen_update(4, 2, 3, 29, 29, "mask2", "mask3") %> } ä¾ãã° mt_bs[i][0] ãæ´æ°ããã¨ã㯠396ãã523çªç®ã®å ¥ã£ãqwordã¨XORããªãã¨ããã¾ããã ãããã¯mt_bs[i][3]ã¨mt_bs[i][4]ã«ã¾ããã£ã¦ãã¦ãåè ããã®11
_ TCO Algorithm Qualification Round 3 å¯éãããã äºæ¦è½ã¡ã¨ãã¦ã±ã¾ãã å¿ãã¦ãâé ã£æã£ã¦å¯ã¦ãâå¯éããã ã¨ãåã®è½åãå ¨ã¦åºãåã£ãæãã§ããã ãã®çµæãäºæ¦è½ã¡ãªã®ã ãããã¾ãé å½ãªçµæãªã®ã ã¨æãã (01:50) _ ã¼ãã®æã®è©± http://www.fukkan.com/fk/VoteDetail?no=3761 復åããããããã ãããã£ã¦ãããç¥ãããæ¥ãã£ã¦ãã¨ã¯ ãªããã®æåã§ãªã¯ã¨ã¹ããã¿ã³æ¼ãããã ãããªãã ã§ãè²·ããªãã¨æããã ãªã èªãã¨æç°ä½¿ããããªããªããã©ã ã¾ããªããªã使ããªãã®ãé£ããããã¨ãããããªã (01:56)
ã¿ããªããã ã¨æããã©ãevenå½ä»¤ãå¤§å¹ ã«éå°ã«ãªã£ã¡ã¾ã£ãã ããããåã®ã³ã¼ãã¯1ã¯ã¼ã1ãã¼ãã·ã£ããã«ç¡ãã ãããããã¯ããå¤ãã㦠http://d.hatena.ne.jp/kikx/20090120 ããã¯ã«ã¼ãã®ã¢ã³ãã¼ã«åã§å å´ã«14åã®ã«ã¼ããæ®ã£ã¦ããã ãã©ã ãããªãã§44åã ã£ãããã¢ã³ãã¼ã«ãã¦oddã«ç§»åã§ããã®ãé çªã«ç§»åãã¦ã£ããã§ããã (y >> 1) ^ mag01[y & 1] y << 7 y << 15ãããã¯ä¸ããã even*1 + odd*3 odd*1 odd*2ãå ¨é¨ãã£ã¦ãã¾ã ä½ã£ã¦ã¦ããããããªããã y >> 11ã®ååããããodd*3ã§ç½®ãæãã¦ã69åéã«ãªã£ãã®ã§ãã ãã¤ãåä½ãããªãã¨ãã£ãããªãã z = si_lqx(spu_slqw(spu_gather(y), 4), mag_lut); r = spu_x
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãç¥ãã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}