- 论坛徽章:
- 7
|
回复 13# anna_bi
biru [pseudocode]:
- ok = [1 .. 10]
- b = [5 4 1 8 7 6 2 3 9 10]
- B = [b]
- c = 0
- LOOP
- c++
- all = turn B
- FOR this all
- IF this EQ ok
- SAY c
- STOP LOOP
- B = pick all
-
复制代码 1: sub count
__DATA__
3 10 8 2 5 4 7 1 6 9
5 2 3 1 7 4 10 8 6 9
$A: 3 10 8 2 5 4 7 1 6 9
@A: 8 4 1 6 5 9 7 3 10 2
8: 1 de index + 1
4: 2 de index + 1
1: 3 de index + 1
6: 4 de index + 1
...
2: 10 de index + 1
@A: 8 4 1 6 5 9 7 3 10 2
$B: 5 2 3 1 7 4 10 8 6 9
@B: 5 4 1 8 7 6 2 3 9 10
5: @A de index ( 5 - 1 )
4: @A de index ( 2 - 1 )
1: @A de index ( 3 - 1 )
...
10: @A de index ( 9 - 1 )
@B: 5 4 1 8 7 6 2 3 9 10
$ok: 1 2 3 4 5 6 7 8 9 10
IF @B EQ $ok => finish
2: sub turn, reverse 1 ci, pailie chu suoyou de keneng
@all = turn [ [ 1, 2, 3, 4, 5 ] ];
@all:
[ 2, 1, 3, 4, 5 ] 0 .. 1
[ 3, 2, 1, 4, 5 ] 0 .. 2
[ 4, 3, 2, 1, 5 ] 0 .. 3
[ 5, 4, 3, 2, 1 ] 0 .. 4
[ 1, 3, 2, 4, 5 ] 1 .. 2
[ 1, 4, 3, 2, 5 ] 1 .. 3
[ 1, 5, 4, 3, 2 ] 1 .. 4
[ 1, 2, 4, 3, 5 ] 2 .. 3
[ 1, 2, 5, 4, 3 ] 2 .. 4
[ 1, 2, 3, 5, 4 ] 3 .. 4
3: sub pick, xuanze breakpoint zhuishao de zuhe
@good = pick @all;
breakpoint: X
2 X 5 6 X 1 X 7
abs( 5 - 2 ) != 1 => bp
abs( 6 - 5 ) == 1 => not bp
abs( 1 - 6 ) != 1 => bp
...
|
|