On the Subject of Deceptive Rainbow Arrows

More like “Two Bitsimon Storgebrack Hole Arrows”...

If there is not a black arrow present or/and there is a pink arrow, you may be looking at Rainbow Arrows.

Note down the direction the white arrow is pointing in and also the order of the arrow colors starting from white going clockwise. Then, note down the 6 arrow flashes using the only color that is or isn’t flashing: if that color is the only one not flashing, the flash is inverted, otherwise, the flash is not inverted. Additionally, note down the display number and the color it flashes after the six arrow flashes.

To query two colors - press the two arrows, then press the display. To submit two colors - press the display, then press the two arrows, and finally press the display again.

Contents on This Manual:

The First Query

Split the serial number into 3 pairs (characters 1 and 2, 3 and 4, 5 and 6), convert every letter into its alphabetic position (A1Z26), then take the sum of each pair’s numbers to get 3 values. Take all of the values modulo 8. The first value is Z, second is Y and third is X.

Find the row representing Z in the table below. Remember this row for later queries and submission. Use X and Y as columns in the table below to get 2 colors. If the number of batteries is even - query Y then X. If the number of batteries is odd - query X then Y.

Z Octal Digit Represented by Color
01234567
0RKYWOGPB
1YOBGRKWP
2BYKRWPGO
3GRPOKWBY
4PBGKYROW
5KWOBPYRG
6WGRPBOYK
7OPWYGBKR

The Second Query

Convert the flashes into 6 binary digits: if the first flash is inverted, its bit is a 1, otherwise, its bit is a 0. Do the same process with the other flashes. Concatenate the flashes’ bits into one string.

Convert your response from the first query from octal to binary, using the table provided to get another six-digit binary string.

OctBinOctBinOctBinOctBinOctBinOctBinOctBinOctBin
00001001201030114100510161107111

XOR the two binary strings to get a new binary sequence. Take the 2nd, 4th, and 6th bits from that sequence to get the first binary triplet and get the second triplet with the remainder. Convert these two binary triplets into octal, join them into one octal value, and then cross reference the table below to get the final octal value. Query it using the table from the first query.

_0_1_2_3_4_5_6_7
0_3602707457322422
1_4030061764345147
2_6353455410616041
3_6707004204564665
4_1662772631126625
5_5552111427053576
6_1550372344334373
7_7572032120137101

The Third Query

Use the response from the second query and start on that coordinate in the extended grid on the next page, where 00 is the top-left of the grid, the first digit is the row and the second digit is the column. In the grid, start facing in the same direction as the white arrow on the module.

Let I = 0, P be an empty list and M the number of clockwise steps it takes to get from the white arrow to the arrow of the display’s flashing color on the module (I.E. if the CW order is WGBRKYOP and dislplay’s flashing color is blue, then M would be 2). Repeat the steps below 4 times:

  1. Add 1 to I
  2. Go forward I times in the grid, wrapping around if needed.
  3. Take the sum of the digits you went through, excluding the digit you ended up on and including the digit you started on.
  4. Append the sum modulo 8 to P.
  5. Rotate 45° clockwise M times.

XOR the first 2 digits of P to create the first octal digit. Likewise, XOR the last 2 digits of P to create the second octal digit.

Concatenate the two obtained digits to get an octal value, cross reference it in second query’s table and query the final octal value using it in first query’s table.

017354260173542601735426
130476521304765213047652
341602753416027534160275
463215074632150746321507
624537106245371062453710
256740312567403125674031
572061435720614357206143
705123647051236470512364
017354260173542601735426
130476521304765213047652
341602753416027534160275
463215074632150746321507
624537106245371062453710
256740312567403125674031
572061435720614357206143
705123647051236470512364
017354260173542601735426
130476521304765213047652
341602753416027534160275
463215074632150746321507
624537106245371062453710
256740312567403125674031
572061435720614357206143
705123647051236470512364

Submitting The Response

Examine the ports present, and create a list of the port type(s) that appear the most. If this list has at least 4 port types mentioned from this table, omit the 1st, 3rd, and 5th flashes. Otherwise, omit the flashes corresponding to the port types in your list in this table.

Port TypeDVI-DParallelPS/2RJ-45Stereo RCASerial
Flash To Omit1st2nd3rd4th5th6th

Go through the rest of the flashes and find its respective equation on the next page based on the color it flashed, its position and its inverted/not inverted state. Plug in x as the result of the previous flash’s equation, or the display number if this is the first set. Keep the calculated value within 0 to 63 by taking the number modulo 64 if the calculated value in base 10 after the current flash is not. Omit decimals when dividing. In the table on the next page:

  • A is the list of responses obtained up to this point.
  • An refers to the response of the nth query.
  • n is the position of the current remaining flash when the equation is used, with the first being 0.
  • min(A) refers to the minimum value from list A.
  • max(A) refers to the maximum value from list A.
  • sum(A) refers to the sum of all of the values from list A.

Don't forget that the display number and all query responses are given in octal, Convert all of them to decimal before using the equations.

Convert the result of the last calculated flash to octal, then use it to reference second query’s table to get a new value, and finally use the final value in first query’s table to get the submission colors.

Yellow and blue’s equations (highlighted in gray) are the only equations that change depending on n.

n Not Inverted Inverted n Not Inverted Inverted
0 R R(x) = x + A1 !R(x) = x - A1 3 R R(x) = x + A1 !R(x) = x - A1
O O(x) = x - A2 !O(x) = x + A2 O O(x) = x - A2 !O(x) = x + A2
Y Y(x) = A3 - x Y Y(x) = A3 - x - 7
G G(x) = x + sum(A) / 3 !G(x) = x - sum(A) / 3 G G(x) = x + sum(A) / 3 !G(x) = x - sum(A) / 3
B B(x) = x - min(A) !B(x) = x + min(A) B B(x) = x - min(A) - 6 !B(x) = x + min(A) + 6
P P(x) = - (x + max(A)) P P(x) = - (x + max(A))
1 R R(x) = x + A1 !R(x) = x - A1 4 R R(x) = x + A1 !R(x) = x - A1
O O(x) = x - A2 !O(x) = x + A2 O O(x) = x - A2 !O(x) = x + A2
Y Y(x) = A3 - x - 1 Y Y(x) = A3 - x - 15
G G(x) = x + sum(A) / 3 !G(x) = x - sum(A) / 3 G G(x) = x + sum(A) / 3 !G(x) = x - sum(A) / 3
B B(x) = x - min(A) - 2 !B(x) = x + min(A) + 2 B B(x) = x - min(A) - 8 !B(x) = x + min(A) + 8
P P(x) = - (x + max(A)) P P(x) = - (x + max(A))
2 R R(x) = x + A1 !R(x) = x - A1 5 R R(x) = x + A1 !R(x) = x - A1
O O(x) = x - A2 !O(x) = x + A2 O O(x) = x - A2 !O(x) = x + A2
Y Y(x) = A3 - x - 3 Y Y(x) = A3 - x - 31
G G(x) = x + sum(A) / 3 !G(x) = x - sum(A) / 3 G G(x) = x + sum(A) / 3 !G(x) = x - sum(A) / 3
B B(x) = x - min(A) - 4 !B(x) = x + min(A) + 4 B B(x) = x - min(A) - 10 !B(x) = x + min(A) + 10
P P(x) = - (x + max(A)) P P(x) = - (x + max(A))