[過去ログ]
プログラミングのお題スレ Part15 (1002レス)
プログラミングのお題スレ Part15 http://mevius.5ch.net/test/read.cgi/tech/1564310397/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
521: さまよえる蟻人間 ◆T6xkBnTXz7B0 [sage] 2019/09/21(土) 20:51:54.21 ID:BmADEcuL お題: 与えられた西暦年月日を年号年月日に変換しなさい。ただし、変換するのは大正時代から令和までとし、範囲外であればERRORを表示しなさい。 http://mevius.5ch.net/test/read.cgi/tech/1564310397/521
523: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2019/09/21(土) 21:24:10.22 ID:BmADEcuL >>522, >>521の順に解いて下さい。 1970/01/05 1990/12/31 2019/04/28 2019/05/01 1920/02/29 http://mevius.5ch.net/test/read.cgi/tech/1564310397/523
526: デフォルトの名無しさん [sage] 2019/09/21(土) 22:37:53.07 ID:tuxPF//K >>521-523 Java https://ideone.com/5XMVPB http://mevius.5ch.net/test/read.cgi/tech/1564310397/526
540: デフォルトの名無しさん [] 2019/09/22(日) 11:51:21.39 ID:OEThTvH6 >>522, >>521 JavaScript const isValid = seireki => { let check try { check = new Intl .DateTimeFormat('ja-JP', {year: 'numeric', month: '2-digit', day: '2-digit'}) .format(new Date(seireki)) } catch (e) { return false } return seireki === check ? true : false } const seirekiToWareki = seireki => { if (!isValid(seireki)) return 'ERROR' const wareki = new Intl .DateTimeFormat('ja-JP-u-ca-japanese', {era: 'long', year: 'numeric', month: 'numeric', day: 'numeric'}) .format(new Date(seireki)) .replace(/(正|和|成)1(年)/, '$1元$2') return ['大正', '昭和', '平成', '令和'].includes(wareki.slice(0, 2)) ? wareki : 'ERROR' } `1979/01/05 1990/12/31 2019/04/28 2019/05/01 1920/02/29 0000/13/32` .split`\n`.forEach(seireki => {console.log(seirekiToWareki(seireki))}) 実行結果: 昭和54年1月5日 平成2年12月31日 平成31年4月28日 令和元年5月1日 大正9年2月29日 ERROR http://mevius.5ch.net/test/read.cgi/tech/1564310397/540
541: デフォルトの名無しさん [sage] 2019/09/22(日) 14:55:10.69 ID:yzO2ACAf >>521-523 Perl5 use Time::Piece; #use Data::Dump 'dump'; @fy = (['2019/05/01', '令和'], ['1989/01/08', '平成'], ['1926/12/25', '昭和'], ['1912/07/30', '大正']); $$_[0] = Time::Piece->strptime($$_[0], '%Y/%m/%d') for @fy; for (qw{1970/01/05 1990/12/31 2019/04/28 2019/05/01 1920/02/29 1912/07/29 2019/02/29}) { my ($t, $t0, $era, $nen); eval {$t = Time::Piece->strptime($_, '%Y/%m/%d')}; if ($t and $t->strftime('%Y/%m/%d') eq $_) { do {($t0, $era) = @$_, last if $$_[0] <= $t} for @fy; if ($t0) { $nen = ($y = $t->year - $t0->year, $y ? $y + 1 : '元').'年' if $t0; $t = "$era$nen".$t->mon.'月'.$t->mday.'日'; } else { $t = 'ERROR'; } } else { $t = 'Invalid'; } print "$_: $t\n"; } 実行結果 ~ $ perl 15_521.pl 1970/01/05: 昭和45年1月5日 1990/12/31: 平成2年12月31日 2019/04/28: 平成31年4月28日 2019/05/01: 令和元年5月1日 1920/02/29: 大正9年2月29日 1912/07/29: ERROR 2019/02/29: Invalid http://mevius.5ch.net/test/read.cgi/tech/1564310397/541
547: デフォルトの名無しさん [sage] 2019/09/22(日) 18:17:09.14 ID:yzO2ACAf >>521 Perl5 >>541 を少しコンパクトにしてみた use Time::Piece; @fy = (['2019/05/01','令和'],['1989/01/08','平成'],['1926/12/25','昭和'],['1912/07/30','大正']); $$_[0] = Time::Piece->strptime($$_[0], '%Y/%m/%d') for @fy; for (qw{1970/01/05 1990/12/31 2019/04/28 2019/05/01 1920/02/29 1912/07/29 2019/02/29}) { my ($t, $t0, $era, $nen); eval {$t = Time::Piece->strptime($_, '%Y/%m/%d')}; $s = 'Invalid'; if ($t and $t->strftime('%Y/%m/%d') eq $_) { do {($t0, $era) = @$_, last if $$_[0] <= $t} for @fy; $s = 'ERROR'; if ($t0) { $nen = ($y = $t->year - $t0->year, $y ? $y + 1 : '元').'年'; $s = "$era$nen" . $t->mon . '月' . $t->mday . '日'; } } print "$_: $s\n"; } http://mevius.5ch.net/test/read.cgi/tech/1564310397/547
551: デフォルトの名無しさん [sage] 2019/09/22(日) 21:30:08.53 ID:WdPSTicU >>521-523 ruby 2.5.5 https://ideone.com/RLhbll ・令和対応はRuby 2.6.3から http://mevius.5ch.net/test/read.cgi/tech/1564310397/551
577: デフォルトの名無しさん [] 2019/09/27(金) 01:42:52.78 ID:/3CUbuCi >>521 Kotlin https://paiza.io/projects/OrRiee2xfpa7RKGGYfpyfQ http://mevius.5ch.net/test/read.cgi/tech/1564310397/577
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.396s*