[過去ログ] プログラミングのお題スレ Part18 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
253
(74): 253 2020/08/09(日)19:01 ID:UiQUiAYf(1) AAS
>>221 Perl5

push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b};
print map{"(@{$h{$_}}) "} sort keys %h;

実行結果

~ $ perl 18_221_NCS_sort_grp.pl
(a A) (B B b) (c c C c) (D d) (E e)
254: 253 2020/08/09(日)19:17 ID:A1LNtpwx(1) AAS
>>249 Perl5

use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};

実行結果
~ $ perl 18_249_strot_cmp.pl
省5
257
(1): 253 2020/08/09(日)22:27 ID:iNMqPGBy(1) AAS
>>253 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正

>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = "$a$a" =~ /^(.*)($b)(.*)$/;
 say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
省10
259
(1): 253 2020/08/09(日)23:21 ID:dFp53gtH(1) AAS
>>221 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  if u in d: d[u] += ' ' + c
  else: d[u] = c
ks = sorted(d.keys())
print(' '.join(map(lambda x: '(%s)' % d[x], ks)))

実行結果
省2
261: 253 2020/08/10(月)00:02 ID:5Aj+dIHX(1/2) AAS
>>259 を少し簡略化

>>221 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  d[u] = d[u]+' '+c if u in d else c
print(' '.join(map(lambda x: '(%s)' % d[x], sorted(d.keys()) )))
262: 253 2020/08/10(月)00:03 ID:5Aj+dIHX(2/2) AAS
>>260
substrとかでも書ける
263
(1): 253 2020/08/10(月)01:07 ID:mTkq56mc(1/2) AAS
>>260
>>257は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので

>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
省7
264
(1): 253 2020/08/10(月)01:18 ID:mTkq56mc(2/2) AAS
>>263 ゴメン、$a[2]$a[0]はbug、訂正

>>249 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split $b, "$a$a", 3;
 say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
省1
265: 253 2020/08/10(月)01:58 ID:5YDTUTIu(1) AAS
>>264 ゴメン
× @a = split $b, "$a$a", 3;
○ @a = split $b, "$a$a", 2;
349: 253 2020/08/16(日)23:50 ID:G5r8RAij(1) AAS
>>308 Perl5

use Data::Dump 'dump';
sub fn {
 my ($le, $pv, @ri) = @_;
 defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
  ,
 @ri ? fn([@$le, $pv], @ri) : ()
}
$N = 3;
@a = 1..$N;
省4
424: 253 2020/08/31(月)21:47 ID:Mm8nXRhv(1) AAS
>>393 Perl5

use feature qw{signatures};
sub f($n) {
 $n ? (f($n-1), ($n) x $n) : ()
}
@a = f(3);
print "@a\n";

実行結果
~ $ perl 18_393_inc_ary.pl
The signatures feature is experimental at 18_393_inc_ary.pl line 2.
省1
425: 253 2020/08/31(月)21:54 ID:pmRcaHIk(1) AAS
>>393 Perl5、単にmapで値個数要素のリストに展開

$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";

j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3
439: 253 2020/09/02(水)00:54 ID:GpxOT2yi(1) AAS
>>393 Python3

(n, a) = (3, [])
for i in range(1, n+1):
  a.extend([i] * i)
print(a)

実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]
447
(1): 253 2020/09/04(金)00:01 ID:7q8p4uRD(1) AAS
>>443 Perl5

print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';

実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
449: 253 2020/09/04(金)00:04 ID:gbrpP/bR(1) AAS
>>447
>>444 逆変換機もか…忘れてた
まいいや
452: 253 2020/09/04(金)23:39 ID:tinAGSqp(1) AAS
>>443>>444 Perl5、バイナリコード(ln)を含むデータをファイルから読み込み、変換》逆変換

undef $/; # slurp
$s = <>;

@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";

%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;

実行結果
省8
466
(3): 253 2020/09/06(日)00:11 ID:Lo+HJN6n(1) AAS
>>380 Perl5

($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
 $c = $a[$h][$w];
 $S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
 if ($c ne '#') {
  $e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
  $e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
 }}}
use feature qw{current_sub say}; no warnings 'experimental';
省18
467: 253 2020/09/06(日)00:30 ID:WEZ/j7UH(1) AAS
>>466
今思うとエッジの表現は無向ではなく二重の有効グラフにしたほうが簡潔なコードになったかもしれない
まぁいいや…二度書く気は起きない…
479: 253 2020/09/06(日)12:24 ID:cAaPNRIA(1) AAS
>>474

>>466>>380への回答なので
その計算量の推定議論には該当しません
490
(3): 253 2020/09/06(日)18:02 ID:EhLQImvS(1/4) AAS
AA省
493: 253 2020/09/06(日)18:20 ID:EhLQImvS(2/4) AAS
>>492
はい、バグってました。投稿してから気がついた
時間あったら直します
494
(2): 253 2020/09/06(日)19:04 ID:EhLQImvS(3/4) AAS
AA省
495: 253 2020/09/06(日)19:13 ID:EhLQImvS(4/4) AAS
>>494 誤記スマソ
× >>489 のBug Fix
>>490 のBug Fix
497
(1): 253 2020/09/06(日)21:09 ID:loE/lDca(1/2) AAS
>>454 Perl5、>>494 を動的計画法で解くように改良(但し再帰呼び出しを使っているので10^5など規模が大きい問題を解くなら下から上に計算してくる単純ループに書き換えた方が良い)

no warnings 'experimental';
use feature qw{signatures say};
$T = <>;
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<>;
use List::Util 'max';
sub f($t, $i) {
 my $s = 0;
 if (0 < $i and $i < 11) {
省9
498: 253 2020/09/06(日)21:11 ID:loE/lDca(2/2) AAS
>>497 の実行結果

~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | perl 18_454_N_vztr_DP_rec.pl
4
省15
499: 253 2020/09/07(月)00:59 ID:5qB4CD7g(1) AAS
>>469 Perl5、小数点以下48桁で「丸め」

use bignum(p=>-48);
print 1/4999, "\n";

実行結果
$ perl 18_468_1_4999-48p.pl
0.000200040008001600320064012802560512102420484097
502
(1): 253 2020/09/08(火)23:15 ID:TMzoRSJV(1/2) AAS
>>454 go 動的計画法

package main
import ( "fmt" )
var m [][]int
func v(t int, p int) int {
 if 1 <= p && p <= 10 { return m[t][p] }; return 0 }
func max3(n1 int, n2 int, n3 int) int {
 n := n1; if n < n2 { n = n2 }; if n < n3 { n = n3 }; return n }
func main() {
 var n, t, p, i, T int
省20
503
(1): 253 2020/09/08(火)23:16 ID:TMzoRSJV(2/2) AAS
>>502 の実行結果

~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | go run 18_454_N_vztr_DP.go
4
省15
504
(1): 253 2020/09/09(水)09:03 ID:GqQ7+Mc6(1/2) AAS
>>454 Python3

n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
T = max([a[i][0] for i in range(n)])
m = [[0] * 11 for t in range(T+1)]
for i in range(n):
   m[a[i][0]][a[i][1]] = 1
def v(t, p):
  return m[t][p] if 0 < p and p < 11 else 0
for t in reversed(range(T)):
省8
505: 253 2020/09/09(水)09:34 ID:GqQ7+Mc6(2/2) AAS
AA省
564: 253 2020/09/18(金)23:34 ID:/yEGF/vF(1/2) AAS
>>559
素因数分解まで行かない。
素でなくてもいいので因数のうちイチバン大きいもの。
なんかいい解法見つけられないか、考えているけどいまのところ見出せていない
565: 253 2020/09/18(金)23:36 ID:/yEGF/vF(2/2) AAS
いや、違うな…
因数のうちイチバン大きいものでは、ダメだわ
572
(1): 253 2020/09/19(土)17:15 ID:6KnxgpBj(1) AAS
>>509 Perl5、>>567にヒントを貰った通り√を使ってnaiveに書くと…

use POSIX 'ceil';
for $n (81, 87, 91) {
 $r = ceil sqrt $n;
 for ($r..$n) {
  $i = $_;
  last until $n % $_;
 }
 print "$n => $i\n"
}
省6
597: 253 2020/09/22(火)02:15 ID:jDcMk3G3(1) AAS
対象性を考慮する以外の計算量の削減手段はないのかねこの手の問題は
解決すべき課題は計算量の削減ばかりではないだろうけれどさ
600
(1): 253 2020/09/28(月)22:51 ID:mT2w1+AU(1/2) AAS
AA省
601: 253 2020/09/28(月)22:53 ID:mT2w1+AU(2/2) AAS
>>600
× 意識した解法を意識してしまうが、
○ 意識した解法を思い浮かべてしまうが、
603: 253 2020/09/29(火)23:24 ID:219xwwXO(1) AAS
>>602
プログラミングのお題スレ Part13
2chスレ:tech
612
(1): 253 2020/10/02(金)21:41 ID:kl4hmyt8(1) AAS
AA省
615
(1): 253 2020/10/03(土)01:10 ID:io8Ij0O0(1/2) AAS
>>605 Perl5

use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n, $l, $r) {
 say "${l}A($m, $n)$r";
 $m ? $n
  ? A($m-1, A($m, $n-1, "${l}A(".($m-1).', ', ")$r"), "${l}A(".$m.', ', ")$r")
  : A($m-1, 1, "${l}A(".($m-1).', ', ")$r") : $n + 1;
}
say A(2, 1, '', '');

実行結果
省16
616: 253 2020/10/03(土)01:13 ID:io8Ij0O0(2/2) AAS
なんかBugってる…orz
621: 253 2020/10/03(土)14:01 ID:5WkJC33J(1) AAS
AA省
624
(1): 253 2020/10/08(木)02:27 ID:Gy7CYzaJ(1) AAS
藻前ら、なかなかやるなー
気に入った。
634
(1): 253 2020/10/09(金)22:43 ID:/QeZd0d9(1) AAS
>>629 Perl5

use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF
省5
699: 253 2020/10/16(金)23:46 ID:5gS0lg4h(1) AAS
>>695 Perl5

use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;

実行結果
$ perl 18_695_bin1.pl
5
744
(1): 253 2020/10/23(金)09:17 ID:7L0FHKID(1) AAS
正規乱数をモンテカルロ法で算出して
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな
759: 253 2020/10/27(火)00:51 ID:uqMOOUWw(1) AAS
そうすると俺にはモンテカルロ法をわざわざ使うところが
どこかよく分からないんだよね…
761
(1): 253 2020/10/28(水)00:01 ID:Jno143Es(1/12) AAS
面白い記号だなそれ。
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
764: 253 2020/10/28(水)00:30 ID:Jno143Es(2/12) AAS
>>762
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ

と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ

P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%

って、お前の教室のホワイトボードじゃねんだぞ。

そんなんでどうっやって世の人と付き合ってんだか…
765
(1): 253 2020/10/28(水)00:40 ID:Jno143Es(3/12) AAS
大体、P()てのは何の関数だ。
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない

お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ

いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
767
(1): 253 2020/10/28(水)00:43 ID:Jno143Es(4/12) AAS
>>766
それ関数じゃないだろ。何で関数として書くんだ。
どういう関数空間なんだ?
768: 253 2020/10/28(水)00:47 ID:Jno143Es(5/12) AAS
簡単なことを
わざわざ難しいことのように書くのは
有能な人のすることではない
770: 253 2020/10/28(水)01:00 ID:Jno143Es(6/12) AAS
>>769
別に落ち着いているけど
これか
外部リンク:ja.wikipedia.org
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど

P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%

これは言葉で書いたらもっと分かりやすくならないのか?
771: 253 2020/10/28(水)01:15 ID:Jno143Es(7/12) AAS
結局 >>760

2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合

この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと

繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している

そういうことに気づきな
773: 253 2020/10/28(水)01:19 ID:Jno143Es(8/12) AAS
まじかw
そしたら回答山盛りだ

お前もさんも回答よろしくな
775: 253 2020/10/28(水)01:20 ID:Jno143Es(9/12) AAS
蛇足だが、あの式で意味がわかった上で
まさか回答できなかったら、単なる無能だからな
776: 253 2020/10/28(水)01:27 ID:Jno143Es(10/12) AAS
>>774
参考までにあなたは今までどのような回答を投稿されましたか?
778: 253 2020/10/28(水)01:30 ID:Jno143Es(11/12) AAS
ふふ、それは
ヒ・ミ・ツ
780: 253 2020/10/28(水)01:56 ID:Jno143Es(12/12) AAS
ゆとり以降だなそりゃ
782: 253 2020/10/28(水)02:16 ID:FRCNqyyj(1) AAS
じゃあ何か自慢の回答でもしてよ
812
(1): 253 2020/10/29(木)23:20 ID:UgpGZWA4(1) AAS
>>807
816
(2): 253 2020/10/30(金)00:07 ID:hMjmzAXb(1/5) AAS
>>787 Perl5

公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。
 splice(@a,@a,0,$x); # push(@a, $x)
 splice(@a,-1);    # pop(@a)
なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ

use v5.18;
use feature 'signatures';
no warnings "experimental::signatures";
sub Push($a, $x) {
 @$a = (@$a, $x);
省17
817: 253 2020/10/30(金)00:09 ID:hMjmzAXb(2/5) AAS
>>816
say $y;
の下に書いてあった最後の行
say "@s";
をコピペしそびれた…orz
818
(1): 253 2020/10/30(金)00:22 ID:hMjmzAXb(3/5) AAS
>>816 Pop関数はこっちの方がいいな、無駄なコピーもないし。

sub Pop($a) {
 my $b = @$a[-1];
 delete @$a[-1];
 $b;
}
819
(1): 253 2020/10/30(金)00:32 ID:hMjmzAXb(4/5) AAS
>>818 deleteは削除したスカラー値を返すわ。だから以下でいいんだ

sub Pop($a) {
 my $b = @$a[-1];
 delete @$a[-1];
}
820: 253 2020/10/30(金)00:34 ID:hMjmzAXb(5/5) AAS
>>819 my $b = @$a[-1]; 不要だった…orz

sub Pop($a) {
 delete @$a[-1];
}
841
(1): 253 2020/10/31(土)22:58 ID:i+h07tFB(1/4) AAS
AA省
843
(1): 253 2020/10/31(土)23:20 ID:i+h07tFB(2/4) AAS
>>842 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる
気にしないで
846: 253 2020/10/31(土)23:32 ID:i+h07tFB(3/4) AAS
>>845
IPアドレスが変わったり日にちがたった自分のレスを簡単に表示し分けられる専ブラで良いのある?
出来ればLinuxで。ちなStyleは好みではない
847
(1): 253 2020/10/31(土)23:38 ID:i+h07tFB(4/4) AAS
>>844
教科書に載っているようなきれいなコード書くね
859: 253 2020/11/01(日)16:54 ID:I8lyxV1q(1) AAS
>>858
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
910: 253 2020/11/06(金)13:23 ID:1EHNC/LO(1) AAS
AA省
938: 253 2020/11/11(水)00:47 ID:vox+S3u3(1) AAS
(´・ω・`)
992
(1): 253 2020/11/29(日)15:02 ID:onV9IrOo(1/2) AAS
>>971Perl5

use Time::Piece;
use Time::Seconds;
$t = Time::Piece->strptime('210201','%y%m%d');
for (0..6) { print $t->fullday."\n"; $t += ONE_DAY }

実行結果
~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
省4
993: 253 2020/11/29(日)17:21 ID:onV9IrOo(2/2) AAS
>>971 Perl5、>>992 のもうチョイ手抜き版

use Time::Piece;
for (1..6,0) { print Time::Piece::fullday([(0)x6, $_])."\n" }

~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
省1
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.337s*