Tävlingsprogrammering/Uppgifter/Kuben

Från Wikibooks
Hoppa till navigering Hoppa till sök

Kuben

Tävlingsprogrammering-kuben1.jpg

En kub av storleken 3x3x3 ska byggas ihop av ett antal tredimensionella "pusselbitar", som var och en består av ett antal sammanhängande småkuber, sammanlagt 27 stycken. I figuren ovan visas ett exempel på en sådan kub samt de fem pusselbitar den är uppbyggd av. För enkelhets skull är de avbildade roterade på det sätt som de sitter i kuben, men i verkligheten får pussel-lösaren de fem bitarna huller om buller. Du ska skriva ett program som tar emot en beskrivning av varje pusselbit och sedan vrider och pusslar ihop dem så att en kub med storlek 3x3x3 bildas.

Beskrivningen av pusselbitarna ges på samma sätt som i uppgift 3, d.v.s. biten läggs ner på ett 3x3 rutnät så att inga hålrum bildas och sedan anges höjden för var och en av de nio "staplarna". Låt oss t.ex. titta närmare på den blå pusselbiten. Den kan roteras så att den ligger enligt figuren nedan och kan därför beskrivas som i tabellen till höger.

Tävlingsprogrammering-kuben2.png Tävlingsprogrammering-kuben3.png

När programmet har pusslat ihop kuben ska det, istället för att beskriva själva kubens uppbyggnad, räkna ut hur många av 1x1-kvadraterna på varje pusselbit som är exponerade på kubens utsida, d.v.s. som ligger på någon av kubens sex sidor. Anledningen till detta är att dessa tal är oberoende av hur man roterar den färdiga kuben.

Indata

På första raden står ett heltal n, (3 ≤ n ≤ 7): antalet pusselbitar. Sedan följer 3 rader för varje pusselbit, alltså sammanlagt 3n rader. På varje rad står tre heltal i intervallet 0..3, höjden för varje stapel.

Utdata

Programmet ska skriva ut n heltal separerade med blanksteg, antalet kvadrater av varje pusselbit som ligger på någon av kubens sex yttersidor. Ordningen på pusselbitarna ska vara samma som i indata. Om det finns flera lösningar kan du ange vilken som helst av dessa. Observera att summan av talen alltid ska vara lika med 54, vilket är kubens totala begränsningsarea.

Exempel: Indata

5
1 1 0
1 0 0
1 1 0
0 0 0
0 3 0
2 2 1
0 1 1
1 1 0
0 0 0
1 0 0
2 0 0
1 1 0
0 0 2
1 1 1
0 0 0

Exempel: Utdata

12 13 8 11 10

Lösning[redigera]

Ska infogas snart. Testar bara bilderna nu.

De fem testfallen

Tävlingsprogrammering-kubentest.jpg