Я думаю, что этот вопрос еще не задан.
Дело в том, что в шахматах мы используем битовые доски для ускорения циклов генерации ходов, представляя позицию битом = 1, а другую - битом = 0. В шахматах у нас 8*8 позиций. В сочетании с современным процессором рекомендуется реализовать это в 64-битных целых числах без знака. В C++ мы можем использовать беззнаковый 64-битный адрес int64_t и присвоить ему что-то вроде этого:
Однако мой вопрос в том, как бы мы это сделали в Котлине. Поскольку kotlin наследует типы данных java, у нас не может быть беззнаковой 64-битной битовой доски, только 63 бита, а для шахмат этого недостаточно. Например.
val whiteInit = 0b11111111_11111111_00000000_00000000_00000000_00000000_00000000_00000000L // cant dos this (=>out of range)
val blackInit = 0b00000000_00000000_00000000_00000000_00000000_00000000_11111111_11111111L // this works
Я не хочу усугублять ситуацию и разбивать строки в разных массивах, как я читал несколько раз, потому что это уродливо и, вероятно, не так быстро.
Итак, я наткнулся на тип данных ULong в «kotlin-stdlib/kotlin/Experimental», и то, что я написал, выглядит многообещающе. Итак, во-первых, спасибо за то, что дочитали до сюда, а во-вторых, это правильный путь или я упускаю что-то лучшее?