Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // For context: https://www.reddit.com/r/badcode/comments/hm7ifj/bad_code_coding_challenge_40_tt9_button_presses/
- // |-----------------------|
- // | 1 | 2 | 3 |
- // | .,?! | abc | def |
- // |-----------------------|
- // | 4 | 5 | 6 |
- // | ghi | jkl | mno |
- // |-----------------------|
- // | 7 | 8 | 9 |
- // | pqrs | tuv | wxyz |
- // |-----------------------|
- // | * | 0 | # |
- // | '-+= | ⎵ | case |
- // |-----------------------|
- use std::collections::*;
- fn main() {
- let mut n = tt9("Hello World"); // # 44 33 555_555 666 0 # 9 666 777 555 3
- if n.1 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "## ");
- n.2 = temp;
- } else if n.0 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "# ");
- n.2 = temp;
- }
- println!("{}", n.2);
- let mut n = tt9("HELLO WORLD"); // ## 44 33 555_555 666 0 ## 9 666 777 555 3
- if n.1 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "## ");
- n.2 = temp;
- } else if n.0 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "# ");
- n.2 = temp;
- }
- println!("{}", n.2);
- let mut n = tt9("abba feed high"); // 2_22_22_2 0 333_33_33_3 0 44_444_4_44
- if n.1 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "## ");
- n.2 = temp;
- } else if n.0 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "# ");
- n.2 = temp;
- }
- println!("{}", n.2);
- let mut n = tt9("I love PHP"); // # 444 0 555 666 888 33 0 ## 7 44 7
- if n.1 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "## ");
- n.2 = temp;
- } else if n.0 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "# ");
- n.2 = temp;
- }
- println!("{}", n.2);
- let mut n = tt9("there r 4 lights!"); // 8 44 33 777 33 0 777 0_0 555 444_4_44 8 7777 1111
- if n.1 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "## ");
- n.2 = temp;
- } else if n.0 {
- let mut temp = n.2.clone();
- temp.insert_str(0, "# ");
- n.2 = temp;
- }
- println!("{}", n.2);
- }
- fn tt9(s: &str) -> (bool, bool, String) {
- enum kp {
- one,
- two,
- there,
- four,
- five,
- six,
- sevem,
- eight,
- nine,
- star,
- zero,
- octothop,
- }
- use kp::*;
- let v = vec![
- (one, ".,?!"),
- (two, "abc"),
- (there, "def"),
- (four, "ghi"),
- (five, "jkl"),
- (six, "mno"),
- (sevem, "pqrs"),
- (eight, "tuv"),
- (nine, "wxyz"),
- (star, "-+="),
- (zero, " "),
- (octothop, "#"), // I would like to point out the pointlessness of this
- ];
- if s.len() == 0 {
- return (false, false, String::from(""));
- }
- let t = tt9((&s[1..]).clone());
- let mut st = String::new();
- for l in 0..v.len() {
- for k in 0..v[l].1.len() {
- if s.as_bytes()[0] == v[l].1.as_bytes()[k] {
- let d = match v[l].0 {
- one => "1".repeat(k + 1),
- two => "2".repeat(k + 1),
- there => "3".repeat(k + 1),
- four => "4".repeat(k + 1),
- five => "5".repeat(k + 1),
- six => "6".repeat(k + 1),
- sevem => "7".repeat(k + 1),
- eight => "8".repeat(k + 1),
- nine => "9".repeat(k + 1),
- star => "*".repeat(k + 1),
- zero => "0".repeat(k + 1),
- octothop => "#".repeat(k + 1),
- };
- st = st + &d;
- } else if s.as_bytes()[0].to_ascii_lowercase() == v[l].1.as_bytes()[k] {
- let d = match v[l].0 {
- one => "1".repeat(k + 1),
- two => "2".repeat(k + 1),
- there => "3".repeat(k + 1),
- four => "4".repeat(k + 1),
- five => "5".repeat(k + 1),
- six => "6".repeat(k + 1),
- sevem => "7".repeat(k + 1),
- eight => "8".repeat(k + 1),
- nine => "9".repeat(k + 1),
- star => "*".repeat(k + 1),
- zero => "0".repeat(k + 1),
- octothop => "#".repeat(k + 1),
- };
- st = st + &d;
- }
- }
- }
- let mut r = (
- s.as_bytes()[0].is_ascii_uppercase(),
- s.as_bytes()[0].is_ascii_uppercase() && t.1,
- String::from(""),
- );
- if (!s.as_bytes()[0].is_ascii_alphabetic() && t.1) {
- r.1 = true;
- st = st + " ##";
- }
- if (s.as_bytes()[0].is_ascii_uppercase() && t.0) {
- r.0 = true;
- r.1 = true;
- } else if (s.as_bytes()[0].is_ascii_uppercase() && !t.0) {
- } else if (!s.as_bytes()[0].is_ascii_uppercase() && t.0 && !r.1) {
- st = st + " #";
- }
- if (t.2.len() > 0 && st.len() > 0) {
- if st.as_bytes()[0] == t.2[..1].as_bytes()[0] {
- st = st + "_";
- } else {
- st = st + " ";
- }
- }
- st = st + &t.2;
- r.2 = st;
- r
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement