pub struct Code { /* private fields */ }
Expand description
Implementations§
Source§impl Code
impl Code
Sourcepub fn from_digits(triangle: u8, square: u8, circle: u8) -> Result<Self, Error>
pub fn from_digits(triangle: u8, square: u8, circle: u8) -> Result<Self, Error>
Get the code with the given digits.
§Errors
If the provided digits do not lie in the range 1..=5
, the code is
invalid and the error [code::Error::InvalidDigits
] will be returned.
§Examples
use turing_machine_ai::code;
assert!(code::Code::from_digits(1, 2, 3).is_ok());
assert_eq!(code::Code::from_digits(3, 4, 9), Err(code::Error::InvalidDigits));
Sourcepub fn digits(self) -> (u8, u8, u8)
pub fn digits(self) -> (u8, u8, u8)
Get the digits of this code.
use turing_machine_ai::code::Code;
let code = Code::from_digits(5, 4, 3)?;
assert_eq!(code.digits(), (5, 4, 3));
let code_2 = Code::from_digits(1, 3, 4)?;
assert_eq!(code_2.digits(), (1, 3, 4));
Sourcepub fn digit_sum(self) -> u8
pub fn digit_sum(self) -> u8
Get the sum of the digits.
use turing_machine_ai::code::Code;
let code = Code::from_digits(5, 2, 4)?;
assert_eq!(code.digit_sum(), 11);
Sourcepub fn count_digit(&self, digit: u8) -> usize
pub fn count_digit(&self, digit: u8) -> usize
Count the appearances of a particular digit.
§Example
use turing_machine_ai::code::Code;
assert_eq!(Code::from_digits(2, 3, 4)?.count_digit(2), 1);
assert_eq!(Code::from_digits(2, 3, 2)?.count_digit(2), 2);
Sourcepub fn count_even(&self) -> usize
pub fn count_even(&self) -> usize
Count the even digits.
§Example
use turing_machine_ai::code::Code;
assert_eq!(Code::from_digits(2, 3, 4)?.count_even(), 2);
Sourcepub fn sequence_ascending_or_descending(&self) -> usize
pub fn sequence_ascending_or_descending(&self) -> usize
Number of digits in ascending or descending order as specified by verifier 25.
Sourcepub fn sequence_ascending(self) -> usize
pub fn sequence_ascending(self) -> usize
Number of digits in ascending order.
use turing_machine_ai::code::Code;
assert_eq!(Code::from_digits(2, 3, 4)?.sequence_ascending(), 3);
assert_eq!(Code::from_digits(2, 3, 3)?.sequence_ascending(), 2);
assert_eq!(Code::from_digits(1, 3, 5)?.sequence_ascending(), 0);
Sourcepub fn repeating_numbers(self) -> usize
pub fn repeating_numbers(self) -> usize
Counts the repetitions of the most frequent number, à la verifier card 20.
use turing_machine_ai::code::Code;
assert_eq!(Code::from_digits(2, 2, 2)?.repeating_numbers(), 2);
assert_eq!(Code::from_digits(1, 1, 2)?.repeating_numbers(), 1);
assert_eq!(Code::from_digits(1, 2, 1)?.repeating_numbers(), 1);
assert_eq!(Code::from_digits(1, 2, 5)?.repeating_numbers(), 0);
Sourcepub fn is_ascending_or_descending(self) -> Order
pub fn is_ascending_or_descending(self) -> Order
Provides the order of the digits as in verifier 22.
use turing_machine_ai::code::{Code, Order};
assert_eq!(Code::from_digits(1, 3, 5)?.is_ascending_or_descending(), Order::Ascending);
assert_eq!(Code::from_digits(4, 2, 1)?.is_ascending_or_descending(), Order::Descending);
assert_eq!(Code::from_digits(2, 3, 1)?.is_ascending_or_descending(), Order::NoOrder);
Trait Implementations§
Source§impl FromIterator<Code> for Set
impl FromIterator<Code> for Set
Source§fn from_iter<T: IntoIterator<Item = Code>>(iter: T) -> Self
fn from_iter<T: IntoIterator<Item = Code>>(iter: T) -> Self
Create a new code set containing all codes in the iterator.
impl Copy for Code
impl Eq for Code
impl StructuralPartialEq for Code
Auto Trait Implementations§
impl Freeze for Code
impl RefUnwindSafe for Code
impl Send for Code
impl Sync for Code
impl Unpin for Code
impl UnwindSafe for Code
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more