Dart實現約瑟夫環問題
阿新 • • 發佈:2020-12-31
技術標籤: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";
}
}