Vấn đề
Bạn được cung cấp một chuỗi các quả bóng màu (đỏ R
và xanh lá cây G
). Một chuỗi có thể là:
RGGGRRGGRGRRRGGGRGRRRG
Trong càng ít lần di chuyển càng tốt, bạn phải thực hiện sao cho mỗi quả bóng có màu khác nhau với các hàng xóm của nó (tức là chuỗi luân phiên.)
RGRGRGRGRGRGRGRGRGRGRG
Bạn nên viết một chương trình có thể chuyển đổi một chuỗi không có thứ tự (trong trường hợp này là một chuỗi) với số lượng bằng "R" và "G" thành một chuỗi trong đó các mục thay thế. Một phiên ví dụ bên dưới, đối với thuật toán ngây thơ ( <
là đầu vào cho chương trình, >
là đầu ra. Không cần thiết phải bao gồm các dấu mũ trên đầu vào hoặc đầu ra.)
< RGGGRRGGRGRRRGGGRGRRRG
> RGGRGRGGRGRRRGGGRGRRRG
> RGRGGRGGRGRRRGGGRGRRRG
> RGRGRGGGRGRRRGGGRGRRRG
> RGRGRGGRGGRRRGGGRGRRRG
> RGRGRGGRGRGRRGGGRGRRRG
> RGRGRGGRGRGRGRGRGGRRRG
> RGRGRGGRGRGRGRGRGRGRRG
> RGRGRGGRGRGRGRGRGRGRGR
> RGRGRGRGGRGRGRGRGRGRGR
> RGRGRGRGRGGRGRGRGRGRGR
> RGRGRGRGRGRGGRGRGRGRGR
> RGRGRGRGRGRGRGGRGRGRGR
> RGRGRGRGRGRGRGRGGRGRGR
> RGRGRGRGRGRGRGRGRGGRGR
> RGRGRGRGRGRGRGRGRGRGGR
> RGRGRGRGRGRGRGRGRGRGRG (15 moves)
Một khả năng khác là xuất ra "5,7" chẳng hạn để chỉ ra sự hoán đổi vị trí 5 và 7.
Bạn có thể xác định vị trí một trong hai màu đỏ hoặc màu xanh lá cây đầu tiên, và bạn không cần phải nhất quán. Mỗi chuỗi sẽ có cùng độ dài như mọi chuỗi khác.
Bạn chỉ có thể hoán đổi bất kỳ hai chữ cái trong mỗi lần di chuyển (chúng không cần phải liền kề.)
Tiêu chí chiến thắng
Chương trình phải hiển thị từng bước của quá trình sắp xếp. Chương trình thực hiện tổng số lần di chuyển ít nhất cho tất cả các chuỗi bên dưới, sẽ thắng. Nếu có hòa, mã ngắn nhất sẽ thắng.
Chuỗi đầu vào
Các chuỗi sau đây sẽ được sử dụng để kiểm tra các chương trình:
GGGGGGGGGGRRRRRRRRRR
GGRRGGRRGGRRGGRRGGRR
RRGGGGRRRRGGGGRRRRGG
GRRGRGGGGRRRGGGGRRRR
GRGGGRRRRGGGRGRRGGRR
RGRGRGRGRGRGRGRGRGRG
Trình tự cuối cùng sẽ dẫn đến không di chuyển.