นิยามปัญหา
พิมพ์ powerset ของชุดที่กำหนด ตัวอย่างเช่น:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
แต่ละองค์ประกอบจะถูกพิมพ์บนบรรทัดแยกดังนั้นตัวอย่างข้างต้นจะถูกพิมพ์เป็น:
[]
[1]
[2]
...
[1, 2, 3]
โค้ดตัวอย่าง (ในตัวอย่าง D, python ที่นี่ ):
import std.stdio;
string[][] powerset(string[] set) {
if (set.length == 1) {
return [set, []];
}
string[][] ret;
foreach (item; powerset(set[1 .. $])) {
ret ~= set[0]~item;
ret ~= item;
}
return ret;
}
void main(string[] argv) {
foreach (set; powerset(argv[1 .. $]))
writeln(set);
}
อินพุต
องค์ประกอบจะถูกส่งเป็นอาร์กิวเมนต์ ตัวอย่างเช่นตัวอย่างที่ให้ไว้ด้านบนจะถูกส่งผ่านไปยังโปรแกรมที่เรียกว่าpowerset
:
powerset 1 2 3
อาร์กิวเมนต์จะเป็นตัวอักษรและตัวเลข
กฎระเบียบ
- ไม่มีไลบรารีนอกเหนือจาก io
- ไม่จำเป็นต้องสั่งเอาท์พุท
- Powerset ไม่จำเป็นต้องจัดเก็บพิมพ์เฉพาะ
- องค์ประกอบในชุดที่จะต้องคั่นด้วย (เช่น
1,2,3
,[1,2,3]
และ['1','2','3']
เป็นที่ยอมรับ แต่123
ไม่ได้เป็น- ตัวคั่นต่อท้ายใช้ได้ดี (เช่น
1,2,3, == 1,2,3
)
- ตัวคั่นต่อท้ายใช้ได้ดี (เช่น
- ดีที่สุดถูกกำหนดตามจำนวนไบต์
ทางออกที่ดีที่สุดจะได้รับการตัดสินไม่น้อยกว่า 10 วันหลังจากการส่งครั้งแรก
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
ไบต์: