[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/10 16:48 / Filesize : 307 KB / Number-of Response : 1031
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part15



1 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 19:39:57.54 ID:832c/ukY.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part14
mevius.5ch.net/test/read.cgi/tech/1558168409/

496 名前:蟻人間 mailto:sage [2019/09/19(木) 03:17:38.21 ID:fzYUHnaE.net]
お題: 明日の東京都の天気を教えてくれる「お天気ねえさん」を実装せよ。

https://www.drk7.jp/weather/
ここのXMLデータを参考に、明日の東京都の天気を優しく説明してくれるような説明テキストを生成せよ。

例) 明日XX月YY日の東京都の天気は○○です。○○注意報が出ています。傘を忘れないでね。

497 名前:蟻人間 mailto:sage [2019/09/19(木) 03:40:46.99 ID:fzYUHnaE.net]
ある種のデータは石油のように重要だから、データ自動生成は条件が揃えばお金儲けにつながる。まあ、とことんチャレンジしたまえ。

498 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 04:53:29.17 ID:kXMoSLFb.net]
>>485
sh と perl5
https://pastebin.com/3dXzkYvR
https://i.imgur.com/G3ehbXa.png

colorlizerの中がperl入りで
見やすくするユーティリティー

499 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 20:26:10.81 ID:tW2U1Dga.net]
google の検索結果を 10 づつ合計 1000 件ダウンロードするプログラム

500 名前:さまよえる蟻人間 mailto:sage [2019/09/19(木) 20:38:41.32 ID:fzYUHnaE.net]
>>488
ボットはあかん

501 名前:デフォルトの名無しさん [2019/09/19(木) 21:01:33.69 ID:Iq+eqHsU.net]
>>467 Lua
マルチバイト文字には対応していない。
function f(s)
   local r,c="",1
   for i=1,#s do
   if s:sub(i,i)==s:sub(i+1,i+1) then
   c=c+1
   else
     r=r..s:sub(i,i)
   if c>1 then
   r=r..c
   c=1
   end
   end
   end
   return(r)
end
print(f("aaabbc"))

実行結果
a3b2c

502 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 21:11:19.84 ID:VNRPdI7o.net]
>>460 octave
https://ideone.com/0BVjSC

>>467 ruby
https://ideone.com/GR4Uu2

503 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 21:20:20.35 ID:7Zlc7qce.net]
>>467
perl5
デバッガが日本語で化けるんで英語だけ
print("aabbccddd" =~ s{ (.) \1* }{ "$1" . length"$&" }xgre);
a2b2c2d3

504 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:35:55.08 ID:brDhMnbX.net]
>>485 Perl5 (LWP::UserAgent、LWP::Protocol::https、XML::Simple のinstallしてあるPCで)

# -*- coding: utf-8 -*-
use utf8; use Data::Dump 'dump'; use Data::Dumper;
binmode STDOUT, ':encoding(utf-8)';
use feature say;
$pno = 13; # ex) 01:北海道, 13:東京, 20:長野, 47:沖縄
$url = "https://www.drk7.jp/weather/xml/$pno.xml";
require LWP::UserAgent; # with LWP::Protocol::https
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko');
$xml = LWP::UserAgent->new->get($url)->content;
use XML::Simple;
my $xs = new XML::Simple; #(keyattr => ['area']); # (forcearray => ['info'], keyattr => ['pref']);
my $data = $xs->XMLin($xml);
say "$_: $data->{$_}" for qw{title link description pubDate author managingEditor};
$pref = $data->{pref}; say "都道府県: $pref->{id}";
%area = %{$pref->{area}};
for $region (keys %area) {
 $area = $area{$region};
 printf "地域: $region (緯度=%s, 経度=%s)\n", @{$area->{geo}}{qw{lat long}};
 for $info (@{$area->{info}}) {
  say " $info->{date} 天気:$info->{weather} (画像 $info->{img})";
  $info->{$_} and say ' 'x9, $info->{$_} for qw{weather_detail wave};
  %temp = %{$info->{temperature}};
  say ' 'x6, " 気温[$temp{unit}]: ", join 'から', sort map{"$_->{content}°"} @{$temp{range}};
  %rfc = %{$info->{rainfallchance}};
  say ' 'x6, " 降水確率 : ", join ', ', map{"$_->{hour}時:$_->{content}$rfc{unit}"} @{$rfc{period}};
 }
}



505 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 00:38:16.81 ID:brDhMnbX.net]
実行結果(例)

~ $ perl 15_485.pl
title: weather forecast xml
link: www.drk7.jp/weather/xml/13.xml
description: 気象庁の天気予報情報を XML で配信。1日1回 AM 6:00 ごろ更新。
pubDate: Thu, 19 Sep 2019 18:00:01 +0900
author: 気象庁
managingEditor: drk7.jp
都道府県: 東京都
地域: 伊豆諸島南部 (緯度=33.2419, 経度=139.8418)
2019/09/19 天気:くもり時々雨 (画像 www.drk7.jp/MT/images/MTWeather/202.gif)
         北東の風 やや強く くもり 夜のはじめ頃 雨 八丈島 では 夜遅く 雷を伴い 激しく 降る
         波 3メートル うねり を伴う
       気温[摂氏]: 21°から23°
       降水確率 : 00-06時:0%, 06-12時:80%, 12-18時:50%, 18-24時:50%
2019/09/20 天気:くもり時々雨 (画像 www.drk7.jp/MT/images/MTWeather/203.gif)
         東の風 やや強く くもり 一時 雨
         波 4メートル のち 3メートル ただし 三宅島 では 3メートル
       気温[摂氏]: 20°から23°
       降水確率 : 00-06時:50%, 06-12時:60%, 12-18時:60%, 18-24時:50%
2019/09/21 天気:くもり一時雨 (画像 www.drk7.jp/MT/images/MTWeather/202.gif)
       気温[摂氏]: 21°から26°
       降水確率 : 00-06時:70%, 06-12時:70%, 12-18時:70%, 18-24時:70%
2019/09/22 天気:くもり一時雨 (画像 www.drk7.jp/MT/images/MTWeather/202.gif)
       気温[摂氏]: 23°から29°
       降水確率 : 00-06時:50%, 06-12時:50%, 12-18時:50%, 18-24時:50%
2019/09/23 天気:くもり一時雨 (画像 www.drk7.jp/MT/images/MTWeather/202.gif)
       気温[摂氏]: 25°から29°
       降水確率 : 00-06時:50%, 06-12時:50%, 12-18時:50%, 18-24時:50%
…(後略

506 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 01:09:22.21 ID:brDhMnbX.net]
お天気おねぃさんとは、ほど遠いなコリャ…

507 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 04:34:57.12 ID:vpcMUgg5.net]
お題

以下の、列区切りが空白である入力文字列を、
最後の列の数値が、小さい順番で、行を並べ替えよ

答えは、上下が反転する

a b c 44
x y 33
z 22
11

508 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 07:37:10.18 ID:ZVVuMGcz.net]
>>496
cat text
a b c 44
x y 33
z 22
11

cat text | perl -pe 's/.*? \s? (\d+)/$1:$&/xgm' | sort -n | perl -pe 's/^\d+://'
11
z 22
x y 33
a b c 44

509 名前:デフォルトの名無しさん [2019/09/20(金) 08:14:00.92 ID:ImrTQZdo.net]
>>467
Common Lisp https://ideone.com/1VXrLk
Perl https://ideone.com/8SVG3V
JavaScript https://ideone.com/Cn73uX

510 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 09:52:16.00 ID:PYkAN+VQ.net]
>>496 Ruby

puts <<~EOS.each_line.sort_by{|s| s[/\S+\n?/].to_i}
  a b c 44
  x y 33
  z 22
  11
EOS

# =>
11
z 22
x y 33
a b c 44

511 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 13:59:42.96 ID:fZRbtgUM.net]
>>489
合法的? にやるにはどうすればいいの?

512 名前:デフォルトの名無しさん mailto:sage [2019/09/20(金) 14:08:52.93 ID:qcElLt/f.net]
>>500
初手でウエイト入れないで読みに行って、アクセス規制法に引っかかるのとかありそう。
鯖落としたら、怒られるからな。警察に。

513 名前:デフォルトの名無しさん [2019/09/20(金) 15:01:57.40 ID:8HAndpSr.net]
>>496 J
echo@>(/: {: @:(0&".) &.>) <;._2 stdin ''

514 名前:デフォルトの名無しさん [2019/09/20(金) 15:07:26.20 ID:uyZD/oLi.net]
appmarketinglabo.net/osaka-bakurotalk/
Q、hamonさん、ここだけの面白い話は何かありますか?

hamon:
絶対にこれをつくれば海外で10万DLされるという「超鉄板ジャンル」がある。
それは「3Dのリアルな人間をつかった実在のスポーツゲーム」、中身がクソでも10万DLはされる。
「ボクシングvs腕相撲」という実質もぐらたたきのようなゲームが30万DLいった。
「スキージャンプ アルティメイタム」というゲームが10万DLくらい。
マイナーなスポーツでもそのような結果なので、競技人口のベスト10のスポーツを調べてつくれば10万DLは固い。
普通につくるとコストがかかるが、UNITYでつくればストア上でモーションも売っているのでかなり稼げると思う。



515 名前:デフォルトの名無しさん [2019/09/21(土) 00:27:57.30 ID:dB3ZeAcF.net]
お題: 同じ文字列がいくつあるか数えるプログラムを作成しなさい。
※出力は出現回数順でソートされている必要はありません。

入力
Hoge
Fuga
Foo
Fuga
Foo
Hoge
Bar
Fuga

出力
Hoge 2
Fuga 3
Foo 2
Bar 1

516 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 00:39:37.54 ID:6wFtRpPA.net]
>>504 Perl5

$h{$_}++ for qw{Hoge Fuga Foo Fuga Foo Hoge Bar Fuga};
print "$_ $h{$_}\n" for keys %h;


実行結果
~ $ perl 15_504.pl
Fuga 3
Hoge 2
Bar 1
Foo 2

517 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 00:45:45.24 ID:Ei1MM/mp.net]
>>504
https://ideone.com/5PI58a
C++。今回はメインロジックの記述が少なくて楽だった。

518 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 00:46:28.49 ID:YPz6oCKs.net]
>>504
cat text
Hoge
Fuga
Foo
Fuga
Foo
Hoge
Bar
Fuga

cat text | perl -ne '$dirs{ s/\R//r } += 1; END{for $key (keys %dirs) {printf "%-4s %s\n", $key, $dirs{$key} } }'
Foo 2
Fuga 3
Bar 1
Hoge 2

519 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 00:50:19.09 ID:Ei1MM/mp.net]
うほっ。C++のunordered_mapはオーダー要求しないから、そこを使って最適化物故むとかやるんかいな。
VCとGCCと挙動違う。

520 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 00:59:47.45 ID:6wFtRpPA.net]
>>496 Perl5

sub f {$_[0] =~ /(\d+)/; $1};
print sort{ f($a) <=> f($b) } <DATA>;
__DATA__
a b c 44
x y 33
z 22
11


実行結果
~ $ perl 15_496.pl
11
z 22
x y 33
a b c 44

521 名前:デフォルトの名無しさん [2019/09/21(土) 04:32:25.24 ID:DxluyDWg.net]
>>496
Kotlin
https://paiza.io/projects/6vObtBsKGF8CSWLHW8cUSQ

522 名前:デフォルトの名無しさん [2019/09/21(土) 05:21:21.47 ID:DxluyDWg.net]
>>504
Kotlin
https://paiza.io/projects/iaaP87ST43fSPdMkOiqSGQ

523 名前:デフォルトの名無しさん [2019/09/21(土) 05:37:07.36 ID:RmdAWOHY.net]
>>504 Ruby
a=readlines.map(&:chomp)
a.uniq.each{|v| puts("#{v} #{a.count(v)}")}

524 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 15:59:00.83 ID:uZ0K83Mw.net]
>>496 ruby
https://ideone.com/VtI7C7
puts readlines.sort_by {|s| s[/\d+$/].to_i}

>>504 ruby
https://ideone.com/Sw6k17
puts $<.read.scan(/\w+/).group_by(&:itself).map {|a, b| '%s %d' % [a, b.size]}



525 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 16:12:27.45 ID:ZyFDPzPp.net]
お題:正の整数が与えられるので、英語の序数に変換せよ
1 => 1st
23 => 23rd
12 => 12th

526 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 16:40:16.71 ID:6wFtRpPA.net]
>>514 Perl5

%o = qw{1 st 2 nd 3 rd};
$o = $o{$_}//'th', print "$_$o\n" for 1..10,12,23;

実行
~ $ perl 15_514.pl
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
12th
23th

527 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 16:54:30.22 ID:6wFtRpPA.net]
>>514 Perl5、 >>515 はもう少しコンパクトに書けた

%o = qw{1 st 2 nd 3 rd};
printf "$_%s\n", $o{$_}//'th' for 1..10,12,23;

528 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 17:38:27.55 ID:uZ0K83Mw.net]
>>514 ruby
https://ideone.com/3Mupna

529 名前:デフォルトの名無しさん [2019/09/21(土) 18:24:27.24 ID:9SoaGQ4l.net]
>>504
Common Lisp https://ideone.com/VW5xja
Perl https://ideone.com/kfn4xI

530 名前:デフォルトの名無しさん [2019/09/21(土) 19:12:36.02 ID:AojYT9zq.net]
1st 2nd 3rd
11th 12th 13th
21st 22nd 23rd
101st 102nd 103rd
111th 112th 113th
121st 122nd 123rd

皆さんここらへん大丈夫?

531 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 19:41:28.17 ID:6wFtRpPA.net]
>>514 Perl5、>>519 で指摘された誤りの修正 テヘペロ

%h = qw{1 st 2 nd 3 rd};
for (1..4,11,12,13,21,22,23,101,102,103,111,112,113,121,122,123) {
 /(\d?)(\d)$/;
 printf "$_ => $_%s\n", $1 eq 1 ? 'th' : $h{$2}//'th';
}


実行結果
~ $ perl 15_514.pl
1 => 1st
2 => 2nd
3 => 3rd
4 => 4th
11 => 11th
12 => 12th
13 => 13th
21 => 21st
22 => 22nd
23 => 23rd
101 => 101st
102 => 102nd
103 => 103rd
111 => 111th
112 => 112th
113 => 113th
121 => 121st
122 => 122nd
123 => 123rd

532 名前:さまよえる蟻人間 mailto:sage [2019/09/21(土) 20:51:54.21 ID:BmADEcuL.net]
お題: 与えられた西暦年月日を年号年月日に変換しなさい。ただし、変換するのは大正時代から令和までとし、範囲外であればERRORを表示しなさい。

533 名前:さまよえる蟻人間 mailto:sage [2019/09/21(土) 21:04:33.10 ID:BmADEcuL.net]
お題: YYYY/MM/DD形式で与えられた西暦年月日の文字列が正しい年月日を表しているかどうか判定せよ。

534 名前:蟻人間 mailto:sage [2019/09/21(土) 21:24:10.22 ID:BmADEcuL.net]
>>522, >>521の順に解いて下さい。

1970/01/05
1990/12/31
2019/04/28
2019/05/01
1920/02/29



535 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:12:07.89 ID:y97V3EOz.net]
>>522 Perl5

use Time::Piece;
for (<DATA>) {
 chomp;
 my $t;
 eval {$t = Time::Piece->strptime($_, '%Y/%m/%d')};
 $t //= 'Invalid';
 print "$_: $t\n";
}
__DATA__
1970/01/05
1990/12/31
2019/04/28
2019/05/01
1920/02/29
0000/13/32


実行結果
1970/01/05: Mon Jan 5 00:00:00 1970
1990/12/31: Mon Dec 31 00:00:00 1990
2019/04/28: Sun Apr 28 00:00:00 2019
2019/05/01: Wed May 1 00:00:00 2019
1920/02/29: Sun Feb 29 00:00:00 1920
0000/13/32: Invalid

536 名前:524 mailto:sage [2019/09/21(土) 22:29:42.44 ID:y97V3EOz.net]
>>524

Time::Piece->strptime は
1900/01/01 よりも前の日付だと
正しい西暦の年月日を入力しても
parse結果が不定となってしまうということがさっき分かりました。
したがって残念ながら>>524のcodeは>>522の題意を満たしているとは
言いがたいものでした。ゴメンね〜

537 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:37:53.07 ID:tuxPF//K.net]
>>521-523 Java
https://ideone.com/5XMVPB

538 名前:蟻人間 mailto:sage [2019/09/21(土) 22:44:04.41 ID:7nrsNPcd.net]
令和1年を令和元年にしないといけないという落とし穴があるようだ。

539 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 22:45:06.50 ID:Awwp+36u.net]
>>504 Ruby

p $<.map(&:chomp).yield_self{|e| e.uniq.map{|v| [v, e.count(v)]}}

# => [["Hoge", 2], ["Fuga", 3], ["Foo", 2], ["Bar", 1]]

540 名前:デフォルトの名無しさん mailto:sage [2019/09/21(土) 23:03:57.96 ID:tuxPF//K.net]
>>527 Java
https://ideone.com/q1JPJ5
しゅうせいしまった

541 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:12:38.88 ID:35++XhB6.net]
>>496 Squeak Smalltalk

#('a b c 44' 'x y 33' 'z 22' '11') sortBy: [:x | x splitInteger last] ascending

"=> an OrderedCollection('11' 'z 22' 'x y 33' 'a b c 44') "

542 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:25:15.35 ID:35++XhB6.net]
>>504 Pharo/Squeak Smalltalk

'Hoge
Fuga
Foo
Fuga
Foo
Hoge
Bar
Fuga' lines asBag sortedElements

"=> {'Bar'->1 . 'Foo'->2 . 'Fuga'->3 . 'Hoge'->2} "

543 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 01:56:51.52 ID:35++XhB6.net]
>>467 Pharo/Squeak Smalltalk

| fn |

fn := [:str | String streamContents: [:ss |
(str as: RunArray) runsAndValuesDo: [:n :x |
ss nextPut: x; nextPutAll: (n = 1 ifTrue: [''] ifFalse: [n asString])
]
]].

fn value: 'あいうえお'. "=> 'あいうえお' "
fn value: 'ああいいうう'. "=> 'あ2い2う2' "
fn value: 'あいうあいう'. "=> 'あいうあいう' "

544 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 08:19:31.82 ID:uuB9aO9i.net]
>>514 Ruby

suffixes = %w[th st nd rd]
f = -> n {(-(-((n - 10) / 10 % 10) / 9)) * 41 / (n % 10 * 10 + 11) * (n % 10)}

[
  1, 2, 3, 4, 11, 12, 13, 21, 22, 23, 101, 102, 103, 111, 112, 113, 121, 122, 123
].each{|v| puts '%1$d => %1$d%2$s' % [v, suffixes[f[v]]]}

# =>
1 => 1st
2 => 2nd
3 => 3rd
4 => 4th
11 => 11th
12 => 12th
13 => 13th
21 => 21st
22 => 22nd
23 => 23rd
101 => 101st
102 => 102nd
103 => 103rd
111 => 111th
112 => 112th
113 => 113th
121 => 121st
122 => 122nd
123 => 123rd



545 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 08:57:02.33 ID:yY5QhyPL.net]
>>533
ruby知らんけどそのfって何?

546 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 09:05:16.49 ID:8u0YwnlN.net]
ラムダ式じゃねーの
おれもruby知らんが

547 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 09:16:58.95 ID:W3ewN8v1.net]
(dolist (n (list 1 2 3 11 12 13 21 22 23 101 102 103 111 112 113 121 122 123) ) (format t "~:R~%" n))
first
second
third
eleventh
twelfth
thirteenth
twenty-first
twenty-second
twenty-third
one hundred first
one hundred second
one hundred third
one hundred eleventh
one hundred twelfth
one hundred thirteenth
one hundred twenty-first
one hundred twenty-second
one hundred twenty-third

548 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 09:21:41.49 ID:uuB9aO9i.net]
>>534-535
ラムダ式.
任意の自然数 n に対して次の式は n の序数詞の末尾が th なら 0, st なら 1, nd なら 2, rd なら 3 を返す.(除算は切り捨て)
(-(-((n - 10) / 10 % 10) / 9)) * 41 / (n % 10 * 10 + 11) * (n % 10)

549 名前:デフォルトの名無しさん [2019/09/22(日) 10:14:00.13 ID:UtdvR7ZT.net]
>>514 Lua
function f(n)
   local r,x
   x=n%10
   if n%100-x==10 or x<1 or x>3 then
   r="th"
   else
   r=({"st","nd","rd"})[x]
   end
   return n..r
end

550 名前:デフォルトの名無しさん [2019/09/22(日) 11:43:05.12 ID:OEThTvH6.net]
>>514 JavaScript
const f=n=>n+=[,'st','nd','rd'][n%100>>3^1&&n%10]||'th'
実行結果略

551 名前:デフォルトの名無しさん [2019/09/22(日) 11:51:21.39 ID:OEThTvH6.net]
>>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: '

552 名前: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
[]
[ここ壊れてます]

553 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 14:55:10.69 ID:yzO2ACAf.net]
>>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

554 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 14:59:46.00 ID:yzO2ACAf.net]
>>541
一行目のコメント
#use Data::Dump 'dump';
はdebugの際に使ったstatementの消し忘れにつき、不要



555 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 15:13:26.78 ID:yzO2ACAf.net]
>>541
$nen = ($y = $t->year - $t0->year, $y ? $y + 1 : '元').'年' if $t0;
の「 if $t0」も削除し忘れだな、ゴメンチャイ

556 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 16:19:32.48 ID:iYBBHKU1.net]
https://github.com/systemd/systemd/blob/82d1264048a3768fb8238387810f78c5d3912058/src/journal/journalctl.c#L2405-L2461
このif elseの羅列をリファクタリングしてください(´・ω・`)

557 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 17:24:37.46 ID:W3ewN8v1.net]
無駄に否定演算子で分かりにくくしている
if (!arg_reverse)
r = sd_journal_next_skip(j, 1 + after_cursor);
else
r = sd_journal_previous_skip(j, 1 + after_cursor);

558 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 17:45:39.81 ID:vTpi5vA1.net]
>>544
hengband.es.land.to/hengband-1.7.0-svn/

このあたりのspells1.cのproject_fのほうが豪華だよ

559 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 18:17:09.14 ID:yzO2ACAf.net]
>>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";
}

560 名前:蟻人間 mailto:sage [2019/09/22(日) 20:58:52.87 ID:Pb++lLAf.net]
お題: マイドキュメントにある全てのファイルの更新日時を取得し、曜日ごとに平均時刻を集計せよ。

561 名前:デフォルトの名無しさん [2019/09/22(日) 21:11:37.57 ID:PDMeYfrK.net]
マイドキュメントがなかった

562 名前:蟻人間 mailto:sage [2019/09/22(日) 21:23:02.16 ID:Pb++lLAf.net]
お題: あるフォルダにある全てのファイルの更新日時を全て同じ日時にリセットせよ。

563 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 21:30:08.53 ID:WdPSTicU.net]
>>521-523 ruby 2.5.5
https://ideone.com/RLhbll
・令和対応はRuby 2.6.3から

564 名前:蟻人間 mailto:sage [2019/09/22(日) 21:35:34.35 ID:rZK31NHQ.net]
※未来の日時にするとMakefileなどで不具合の原因になるかもしれないので、やめよう。必ず過去の日付で。



565 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 21:40:33.36 ID:2VFOPinw.net]
>>1
◆T6も書き込み禁止

566 名前:蟻人間 mailto:sage [2019/09/22(日) 22:00:19.44 ID:rZK31NHQ.net]
>>553
カレンダー苦手?
そりゃごめんね。誰でも解けるような問題解いて面白い? もしかして

567 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:02:04.64 ID:35++XhB6.net]
とりあえずNGにした

568 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:03:45.82 ID:35++XhB6.net]
うっかり回答しないように連鎖にしとく方がいいか

569 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:23:23.82 ID:W3ewN8v1.net]
>>548
\ls -l --time-style=+%a:%T ~/ | perl -lane 'print $F[5]' | sed "/^$/d" | perl -F: -lane '{++$i{$F[0]}; $acc{$F[0]} += $F[1]*3600 + $F[2] *60 + $F[3] }END{ print "$_ ". $acc{$_}/$i{$_} . " seconds" for keys %acc}'
日 49262.7 seconds
金 52984.3125 seconds
火 56316.8461538462 seconds
木 47056.3333333333 seconds
月 53660.7894736842 seconds
土 49998.1538461538 seconds
水 48117.5 seconds

570 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:24:24.30 ID:W3ewN8v1.net]
スルーだったか

571 名前:蟻人間 mailto:sage [2019/09/22(日) 22:44:17.87 ID:rZK31NHQ.net]
お題: 自分のプログラムファイルが何バイトかを表示せよ。

572 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:48:43.53 ID:Yf8464Y3.net]
>>548 Perl5、なお>>550は(utimeを使えばできますが)回答は作成いたしません

use File::Find 'find';
sub hier {
 my $mtime = (lstat)[9];
 push @epochs, $mtime if -f _;
}
find({wanted => \&hier}, "$ENV{USERPROFILE}/My Documents");
@w = ([],[],[],[],[],[],[]);
for (@epochs) {
 ($sec, $min, $hour, $wday) = (localtime $_)[0..2,6];
 push @{$w[$wday]}, 3600*$hour + 60*$min + sec;
}
use List::Util 'sum';
use Time::Piece;
@dw = qw(日 月 火 水 木 金 土);
for (0..6) {
 $n = @{$w[$_]};
 $mean = sum(@{$w[$_]}) / $n;
 $s = Time::Piece->new($mean);
 printf "$dw[$_](%4d): %s\n", $n, $s->hms;
}

実行結果
~ $ perl 15_548.pl
日( 104): 21:04:43
月( 94): 22:57:25
火( 46): 21:41:46
水( 298): 12:55:47
木( 322): 05:04:39
金(2020): 07:01:42
土(1650): 22:50:54

573 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:50:50.35 ID:JOdgUuSI.net]
>>548
馬鹿っぽ

574 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 22:53:39.99 ID:JOdgUuSI.net]
蟻人間、プログラミングに興味を持ち始めた中学生臭がすごい



575 名前:蟻人間 mailto:sage [2019/09/22(日) 23:00:26.05 ID:rZK31NHQ.net]
>>559
はいはい、模範解答出せばいいんでしょ?

// C++/Win32
#include <windows.h>
#include <stdio.h>
int main(void)
{
char buf[MAX_PATH];
GetModuleFileNameA(NULL, buf, MAX_PATH);
WIN32_FIND_DATAA find;
HANDLE hFind = FindFirstFileA(buf, &find);
printf("%ld bytes", find.nFileSizeLow);
FindClose(hFind);
return 0;
}

576 名前:蟻人間 mailto:sage [2019/09/22(日) 23:03:43.50 ID:rZK31NHQ.net]
>>559 別解ね。
/* C */
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fp = fopen(argv[0], "rb");
fseek(fp, 0, SEEK_END);
printf("%ld bytes\n", ftell(fp));
fclose(fp);
return 0;
}

577 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:10:48.88 ID:Yf8464Y3.net]
>>559 Perl5

print -s $0, "bytes\n";

実行
~ $ perl 15_559.pl
25bytes

578 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:25:59.86 ID:35++XhB6.net]
>>514 Pharo/Squeak Smalltalk

| suffixes fn |



579 名前:suffixes := #(st nd rd), (Array new: 7 withAll: #th).
suffixes := (0 to: 9) gather: [:idx | suffixes].
suffixes from: 11 to: 13 put: #th.

fn := [:n | n asString, (suffixes atWrap: n)].

fn value: 1. "=> '1st' "
fn value: 23. "=> '23rd' "
fn value: 12. "=> '12th' "
[]
[ここ壊れてます]

580 名前:デフォルトの名無しさん mailto:sage [2019/09/22(日) 23:32:48.92 ID:Yf8464Y3.net]
>>560 修正、0割回避、localtimeが返すepochのmtimeはUTCベースなのでTZ設定追加し9時間ずれ対策

$ENV{TZ} = 'UTC';
use File::Find 'find';
use Time::Piece;
sub hier {
 my $mtime = (lstat)[9];
 push @epochs, $mtime if -f _;
}
find({wanted => \&hier}, "$ENV{USERPROFILE}/My Documents");
print "Number of files = " . @epochs . "\n";
@w = ([],[],[],[],[],[],[]);
for (@epochs) {
 ($sec, $min, $hour, $wday) = (localtime $_)[0..2,6];
 push @{$w[$wday]}, 3600*$hour + 60*$min + sec;
}
use List::Util 'sum';
@dw = qw(日 月 火 水 木 金 土);
for (0..6) {
 $n = @{$w[$_]};
 if ($n) {
  $mean = sum(@{$w[$_]}) / $n;
  $s = Time::Piece->new($mean);
  printf "$dw[$_](%4d): %s\n", $n, $s->hms;
 }
}

581 名前:蟻人間 mailto:sage [2019/09/23(月) 00:23:07.10 ID:JAc5gnVl.net]
>>548
出題の狙い。犯罪捜査において被疑者または関係者の生活パターンを知りたいときに、パソコンのファイルの日時の統計のデジタル鑑識により、パソコンの使用実態が類推可能であることを示すものである。

582 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 00:28:46.25 ID:GyCF+Do4.net]
出勤とか寝る時間があまり変わらないという仮定で
同一人物の疑いがある2つのコテハンを
数百スレ分から時間別書き込み頻度から検証したことがあるが
それにくらべると得られる情報少なすぎて草

583 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 00:30:37.56 ID:iF+DbCXr.net]
>>568
馬鹿っぽ

584 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 01:01:29.40 ID:ZSRjXCoe.net]
>>568
朝と夜に作ったファイルの平均は昼になるし
ダウンロードした大規模なOSSのアーカイブを展開した物とか入っているんで
曜日ごとの平均時刻じゃー何の傾向も分かりません



585 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 01:43:06.73 ID:ZSRjXCoe.net]
>>567
そうじゃねぇだろ、file systemのmtimeはUTCベースなのに
わざわざlocaltimeでTZ=JST_9の日時に変換してから
時分秒だけTime::Pieceに食べさせるから
GMTとして解釈され9時間ずれたんだよ。
それを回避するためTZ環境変数にUTCを設定するとは
何たる尻の青い、くちばしの黄色い、まだ駆け出しの青二才、未熟者

586 名前:デフォルトの名無しさん [2019/09/23(月) 04:00:12.20 ID:Sp7ybd6s.net]
>>559 Common Lisp
https://ideone.com/idfFJM (sbcl)
https://ideone.com/8G7hUD (clisp)

ideoneは、sbclの場合は compile-file で作成したファイルを実行しているらしく
結果が異なっているのはそのため

587 名前:蟻人間 mailto:sage [2019/09/23(月) 12:05:34.14 ID:Pxp3zDR1.net]
>>548
C++/Win32 模範解答。
https://gist.github.com/katahiromz/63c00d6c670370d7602fcd991fdc0eba

588 名前:デフォルトの名無しさん mailto:sage [2019/09/23(月) 12:49:49.08 ID:iF+DbCXr.net]
模範解答(汚ねえスパゲティ)

589 名前:デフォルトの名無しさん [2019/09/23(月) 13:54:34.61 ID:2RLjyW/B.net]
>>504 Lua

a={}
for x in io.lines() do a[x]=(a[x] or 0)+1 end
for k,v in pairs(a) do print(k,v) end

590 名前:デフォルトの名無しさん [2019/09/27(金) 01:42:52.78 ID:/3CUbuCi.net]
>>521
Kotlin
https://paiza.io/projects/OrRiee2xfpa7RKGGYfpyfQ

591 名前:デフォルトの名無しさん [2019/09/27(金) 02:44:56.39 ID:/3CUbuCi.net]
>>522
Kotlin
https://paiza.io/projects/saSW2aaTiVigsU_14uCc-g

592 名前:デフォルトの名無しさん [2019/09/27(金) 02:50:14.35 ID:/3CUbuCi.net]
>>550
シェルスクリプト (find, touch コマンド使用)

2019/09/27 02:48:00 に合わせる場合

#!/bin/sh
find

593 名前: あるフォルダ -type f -exec touch -t 201909270248.00 {} \; []
[ここ壊れてます]

594 名前:デフォルトの名無しさん [2019/09/27(金) 19:49:32.99 ID:jf7tgLq0.net]
>>548
Powershell

ls ([Environment]::GetFolderPath(5)) -Recurse -Force |? {!$_.PSIsContainer} `
|% {$_.LastWriteTime} | sort {[int]$_.DayOfWeek} | group {"{0:ddd}" -f $_} `
|% {"{0}{1,10:T}" -f $_.Name, [DateTime][Int64]($_.Group |% {$_.TimeOfDay.Ticks} | measure -Average).Average}



595 名前:デフォルトの名無しさん [2019/09/27(金) 19:57:07.16 ID:jf7tgLq0.net]
>>580をコピペで実行するときは、`の後の半角空白を削除しないとエラーになる。

596 名前:デフォルトの名無しさん mailto:sage [2019/09/27(金) 21:29:22.88 ID:vBAnAZ37.net]
お題:リスト等の重複する要素を削除し、大きい順に並び替えよ
[3, 1, 4, 1, 5]

[5, 4, 3, 1]

java
https://ideone.com/8VN6hL

rust
https://ideone.com/igyvob

ruby
https://ideone.com/VsemVf

octave
https://ideone.com/FHue1K






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef