1use handwired_rs::handwired;
6
7#[handwired]
9fn fizzbuzz(#[range(1, 100)] n: u8) -> u8 {
10 if n % 15 == 0 {
11 3
12 } else if n % 5 == 0 {
13 2
14 } else if n % 3 == 0 {
15 1
16 } else {
17 0
18 }
19}
20
21fn main() {
22 let net = fizzbuzz_circuit();
23 println!(
24 "fizzbuzz as a ReLU network: {} operations in {} layers",
25 net.program.live_operation_count(),
26 net.program.layers.len()
27 );
28 let mut line = Vec::new();
29 for n in 1..=100u8 {
30 let answer = net.eval(&(n,)).unwrap();
31 assert_eq!(answer, fizzbuzz(n), "the network got {n} wrong");
32 line.push(match answer {
33 3 => "FizzBuzz".to_string(),
34 2 => "Buzz".to_string(),
35 1 => "Fizz".to_string(),
36 _ => n.to_string(),
37 });
38 }
39 println!("{}", line.join(" "));
40 println!("100 of 100 correct, with no training.");
41}