Η λύση μου στο επίπεδο 38 (Seek and Destroy) του 7BH

Το πρόβλημα είναι να βρείς τον μικρότερο αριθμό. Η λύση μου είναι να βρεί ο κάθε εργαζόμενος το
μικρότερο στη στήλη του και ο εργαζόμενος που είναι δίπλα στον καταστροφέα θα αναλάβει να
βρει τον μικρότερο από αυτούς που λογικά θα είναι και ο μικρότερος από όλους.

Να σημειωθεί ότι τα επίπεδα 36-38 βασίζονται στο κώδικα του επιπέδου 34.

Η λύση μου είναι βέλτιστη χρονικά αλλά όχι σε πλήθος εντολών.

Ένα καλό ερώτημα είναι πόσο ποιό αποδοτικός είναι ο παράλληλος αλγόριθμος από την
περίπτωση του ενός εργαζόμενου.

Για για Ν αριθμούς ένας εργαζόμενος πρέπει εκτελέσει ~Ν βήματα.
Όμως στον παράλληλο έχουμε ~ Ρίζα(Ν) + Ν ,οπότε βασικά ρίζα(Ν)

Για  10000 αριθμούς έχουμε χρόνο αντίστοιχο 100 βημάτων.

 


-- 7 Billion Humans (2053) --
-- 38: Seek and Destroy 3 --

if w == wall:
	jump a
endif
mem3 = nearest wall
mem1 = set 99
b:
step n
if n == wall:
	jump c
endif
if c == datacube:
	mem2 = nearest datacube
	if mem2 <= mem1:
		mem1 = set mem2
	endif
endif
jump b
pickup c
mem1 = set myitem
c:
pickup mem1
step mem3
drop
step n
end
a:
step se
mem2 = set 99
mem1 = nearest shredder
d:
if e != datacube:
	jump d
else:
	jump e
endif
e:
f:
if e != hole:
	step e
	mem3 = nearest datacube
	if mem3 <= mem2:
		mem2 = set mem3
	endif
	jump f
else:
	step mem2
	pickup c
	step mem1
	giveto s
	end
endif

Ετικέτες:, ,

Αφήστε μια απάντηση