実力判定:Cランク
締め切りが 2017/12/31 10:00 AM なので,その 1 分後に投稿されるように予約
きっと,締め切りは,再来年,再々来年...と繰り延べられるのだろうけど
【問題】
「0123456789」の10枚のカードの内、4枚のカードが提示されます。
通常は、「最も数値が大きなカード」が勝利者のカードです。
4枚の中に0があれば、「0以外で最も小さなカード」が勝利者のカードです。
勝利者のカードの数値を割り出してください。
【入力】
標準入力から、複数行のデータが与えられます。1行のデータが、1セットのゲームになります。
1行のデータは、数字4文字の文字列になります。この1文字ずつが、1枚のカードになります。
【出力】
1行ずつ結果を判定して、その答えとなる数字を、1行ごと標準出力に出力します。
【入出力サンプル】
Input
1234
6745
0149
3705
Output
4
7
1
3
==============================================================
R
f = function(S) {
for (s in S) {
s = as.integer(unlist(strsplit(s, "")))
i = which(s == 0)
if (length(i) > 0) {
x = min(s[-i])
} else {
x = max(s)
}
cat(x, "\n", sep="")
}
}
f(readLines(file("stdin", "r")))
==============================================================
AWK
awk '{
split($0, x, "")
Min = 100
Max = -100
zero = 0
for (i = 1; 4 >= i; i++) {
if (x[i] == 0) {
zero = 1
}
else {
Min = Min < x[i] ? Min : x[i]
Max = Max > x[i] ? Max : x[i]
}
}
if (zero == 1) {
print Min
}
else {
print Max
}
}
'
==============================================================
Perl
use strict;
use warnings;
use utf8;
use List::Util qw/max min/; # min, max 関数を使うため
my ($line, $i, @char, $Min, $Max, $zero);
while (defined(my $line = )) {
# print $line;
@char = split(//, $line);
$Min = 10;
$Max = -10;
$zero = 0;
for ($i = 0; $i < 4; $i++) {
if ($char[$i] == 0){
$zero = 1;
}
else {
$Min = min($Min, $char[$i]);
$Max = max($Max, $char[$i]);
}
}
if ($zero) {
print $Min, "\n";
}
else {
print $Max, "\n";
}
}
==============================================================
VB.net
imports System
module Crank
sub Main()
dim line as String
dim m as Integer
dim Min, Max, ans as Integer
dim zero as Boolean
for i as integer = 1 to 100
line = Console.ReadLine() ' コンソールから入力
Min = 10
Max = -10
zero = False
for i as integer = 1 to 4
m = Integer.Parse(mid(line, i, 1)) ' 文字列を整数に変換
if (m = 0) then
zero = True
else
Min = Math.min(Min, m)
Max = Math.max(Max, m)
end if
next
if (zero) then
ans = Min
else
ans = Max
end if
Console.WriteLine(ans) ' コンソールに出力 改行しないなら Console.Write()
next
end sub
end module
最新の画像[もっと見る]
- 算額(その2135) 10時間前
- 算額(その2134) 17時間前
- 算額(その2133) 1日前
- 算額(その2132) 3日前
- 算額(その2131) 4日前
- 算額(その2130) 4日前
- 算額(その2129) 5日前
- 算額(その2128) 5日前
- 算額(その2127) 6日前
- 算額(その2126) 6日前
※コメント投稿者のブログIDはブログ作成者のみに通知されます