summaryrefslogtreecommitdiff
path: root/k-th-symbol-in-grammar/src
diff options
context:
space:
mode:
Diffstat (limited to 'k-th-symbol-in-grammar/src')
-rw-r--r--k-th-symbol-in-grammar/src/main.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/k-th-symbol-in-grammar/src/main.rs b/k-th-symbol-in-grammar/src/main.rs
new file mode 100644
index 0000000..5aaa24c
--- /dev/null
+++ b/k-th-symbol-in-grammar/src/main.rs
@@ -0,0 +1,28 @@
+fn main() {
+ println!("Hello, world!");
+ let tests = vec![
+ (1,1,0),
+ (2,1,0),
+ (2,2,1),
+ (30, 434991989, 0)
+ ];
+ for (n,k,o) in tests {
+ let result = Solution::kth_grammar(n,k);
+ println!("{n} {k} {result} {o}");
+ }
+}
+
+struct Solution;
+
+impl Solution {
+ pub fn kth_grammar(n: i32, k: i32) -> i32 {
+ let mut s: Vec<bool> = vec![false];
+ for _ in 0..n {
+ s = s.iter().flat_map(|x| match x {
+ false => [false,true],
+ true => [true,false]
+ }).collect::<Vec<_>>();
+ }
+ s[(k - 1) as usize] as i32
+ }
+}