Advertisement
LDDestroier

DEFCON 2025 puzzle 3 solvinator

May 24th, 2025
1,724
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.56 KB | None | 0 0
  1. /*
  2. Red    = 01
  3. Green  = 00
  4. Blue   = 10
  5. Yellow = 11
  6. */
  7.  
  8. const COLOR_ORDER: &str = "grby";
  9.  
  10. fn bool_array_to_char(byte: [bool; 8]) -> char {
  11.     let mut b = 0u8;
  12.     for i in 0..8 {
  13.         b |= u8::from(byte[i]) << (7 - i % 8);
  14.     }
  15.     return char::from(b)
  16. }
  17.  
  18. fn main() {
  19.     let grid = [
  20.         "rrryrbbg",
  21.         "rbgrryrg",
  22.         "gbggrbbr",
  23.         "rygygbgg",
  24.         "gybggybg",
  25.         "gbyrgyrr",
  26.         "gyrggbby",
  27.         "gybggyyy"
  28.     ];
  29.    
  30.     fn parse_color(color: char) -> usize {
  31.         COLOR_ORDER.find(color).unwrap_or(0)
  32.     }
  33.    
  34.     fn do_that(offset: usize, line: &str) -> [bool; 8] {
  35.         let mut byte: [bool; 8] = [false; 8];
  36.         let mut byte_i = 0;
  37.         for i in 0..=3 {
  38.             let col_value = parse_color(line.chars().nth(i + offset).unwrap_or(' '));
  39.            
  40.             byte[byte_i] = match col_value {
  41.                 0 => false,
  42.                 1 => false,
  43.                 2 => true,
  44.                 3 => true,
  45.                 _ => false,
  46.             };
  47.            
  48.             byte_i += 1;
  49.            
  50.             byte[byte_i] = match col_value {
  51.                 0 => false,
  52.                 1 => true,
  53.                 2 => false,
  54.                 3 => true,
  55.                 _ => false,
  56.             };
  57.            
  58.             byte_i += 1;
  59.         }
  60.        
  61.         return byte
  62.     }
  63.    
  64.     for line in grid.iter() {
  65.         print!("{}", bool_array_to_char(do_that(0, line)));
  66.         print!("{}", bool_array_to_char(do_that(4, line)));
  67.     }
  68.    
  69.     println!("");
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement