1. 程式人生 > 其它 >Dart實現約瑟夫環問題

Dart實現約瑟夫環問題

技術標籤:Android學習筆記dart

Dart實現約瑟夫環問題


IT景隆http://www.itjl.top:90
來源:
最近逛部落格,看到有人說面試是遇到問約瑟夫環問題。。。

“約瑟夫”是誰?約瑟夫環又是什麼鬼?於是不恥下問(不以不知道大家都知道的知識為恥-_-||)的我去百度了下;

哦,原來就是個一直轉圈的丟手絹遊戲。。。

正好最近在學習Flutter,於是就試著用Dart語言來寫下這個東東

程式碼:

import 'package:flutter_test/flutter_test.dart';

/// 也可以使用命令來執行 flutter test test/counter_test.dart
void main() { // 單一的測試 test("測試約瑟夫環問題", () { Joseph.circle(); }); } class Joseph { static void circle() { //初始化資料 List<Person> list = new List(); num totalPerson = 30; num startNum = 0; num count = 6; for (int i = 0; i < totalPerson; i++) { list.
add(new Person("約瑟夫$i號", i + 1, false)); } int position = 0, c = 0, k = 0; while (k < list.length) { if (!list[position].killed) { c++; } if (c == count) { list[position].killed = true; c = 0; k++; var name = list[position]
.name; var po = list[position].position; print("當前被殺$name 位於$po 號位置"); } if (position >= list.length - 1){ position = 0; print("新一輪:\n");} else position++; } print(list); } } class Person { String name; int position; bool killed; Person(this.name, this.position, this.killed); @override String toString() { return "\n 姓名:$name 位置$position 是否被殺:$killed"; } }

IT景隆http://www.itjl.top:90