Semordnilap: Difference between revisions
Content added Content deleted
(Added Rust solution) |
|||
Line 2,700: | Line 2,700: | ||
words.take(5).each {|a,b| puts "#{a} #{b}"}</lang> |
words.take(5).each {|a,b| puts "#{a} #{b}"}</lang> |
||
output is the same above. |
output is the same above. |
||
=={{header|Rust}}== |
|||
{{trans|Java}} |
|||
<lang rust>use std::collections::HashSet; |
|||
use std::fs::File; |
|||
use std::io::{self, BufRead}; |
|||
use std::iter::FromIterator; |
|||
fn semordnilap(filename: &str) -> std::io::Result<()> { |
|||
let file = File::open(filename)?; |
|||
let mut seen = HashSet::new(); |
|||
let mut count = 0; |
|||
for line in io::BufReader::new(file).lines() { |
|||
let mut word = line?; |
|||
word.make_ascii_lowercase(); |
|||
let rev = String::from_iter(word.chars().rev()); |
|||
if seen.contains(&rev) { |
|||
if count < 5 { |
|||
println!("{}\t{}", word, rev); |
|||
} |
|||
count += 1; |
|||
} else { |
|||
seen.insert(word); |
|||
} |
|||
} |
|||
println!("\nSemordnilap pairs found: {}", count); |
|||
Ok(()) |
|||
} |
|||
fn main() { |
|||
match semordnilap("unixdict.txt") { |
|||
Ok(()) => {} |
|||
Err(error) => eprintln!("{}", error) |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
ca ac |
|||
dab bad |
|||
diva avid |
|||
dna and |
|||
drab bard |
|||
Semordnilap pairs found: 158 |
|||
</pre> |
|||
=={{header|Scala}}== |
=={{header|Scala}}== |