結果
| 問題 |
No.227 簡単ポーカー
|
| コンテスト | |
| ユーザー |
yukyu
|
| 提出日時 | 2021-03-07 17:07:15 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,788 bytes |
| コンパイル時間 | 11,725 ms |
| コンパイル使用メモリ | 380,344 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-08 23:26:26 |
| 合計ジャッジ時間 | 12,579 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | WA * 14 |
ソースコード
use std::io::*;
use std::str::FromStr;
fn main() {
let a = (0..5).map(|_| read()).collect::<Vec<i64>>();
exec(a);
}
fn exec(r: Vec<i64>) {
let acc: Vec<Vec<i64>> = vec![];
let result = rec_pair(acc, r);
println!("{:?}", make_hands(result));
}
fn make_hands(mut r: Vec<Vec<i64>>) -> String {
r.sort_by(|a, b| b.len().cmp(&a.len()));
match r.len() {
4 => String::from("ONE PAIR"),
3 => three_or_two(r),
2 => fullhouse_or_no(r),
_ => String::from("NO HAND"),
}
}
fn three_or_two(r: Vec<Vec<i64>>) -> String {
if r[0].len() == 3 {
return String::from("THREE CARD");
}
String::from("TWO PAIR")
}
fn fullhouse_or_no(r: Vec<Vec<i64>>) -> String {
if r[0].len() == 3 {
return String::from("FULL HOUSE");
}
String::from("NO HAND")
}
fn rec_pair(mut acc: Vec<Vec<i64>>, mut r: Vec<i64>) -> Vec<Vec<i64>> {
if r.is_empty() {
return acc;
} else {
let head = r.remove(0);
let mut b: Vec<i64> = vec![];
let mut remove_index: Vec<usize> = vec![];
b.push(head);
for (i, v) in r.iter().enumerate() {
if &head == v {
remove_index.push(i);
b.push(r[i]);
}
}
remove_index.sort_by(|a, b| b.cmp(a));
for i in remove_index {
r.remove(i);
}
acc.push(b);
}
rec_pair(acc, r)
}
fn read<T: FromStr>() -> T {
let stdin = stdin();
let stdin = stdin.lock();
let token: String = stdin
.bytes()
.map(|c| c.expect("failed to read char") as char)
.skip_while(|c| c.is_whitespace())
.take_while(|c| !c.is_whitespace())
.collect();
token.parse().ok().expect("failed to parse token")
}
yukyu