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

■ このスレッドは過去ログ倉庫に格納されています
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
プログラミングのお題スレです。

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

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

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

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

※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
2020/11/30(月) 00:27:32.09ID:OK+46EGm
const array = ['乙', '1', '>', '>'];
for(let i = 0; array.length > 0;) {
console.log(array.pop());
}
2020/11/30(月) 00:44:30.29ID:TF2Czp0y
全スレ >>995 C++

DPでO(N)
ただスマホコーディングなのと今すごく眠いので、何か間違ってたらすまん

https://wandbox.org/permlink/aZbSfE5gQHA9x9B6
2020/11/30(月) 01:19:09.34ID:7QMEfWyp
>>1
>>http://mevius.2ch.net/test/read.cgi/tech/1594702426/995
bat
:: 配列中の小計の最大値を取る区間A-Bを出力。0を閾値にしているので正の最大値限定
@echo off &setlocal enabledelayedexpansion
set args=-2,1,-3,4,-1,2,1,-5,4
set /a S=N=i=0
for %%a in (%args%) do (
set /a i+=1
set /a N+=a[!i!]=%%a
if !N! GTR !S! set /a S=N, B=i &if not defined A set /a A=i
if !N! LSS 0 set /a N=0 &set A=
)
for /L %%i in (%A%,1,%B%) do set R=!R!,!a[%%i]!
set R=[%R:~1%]
echo %R%
pause&exit /b
2020/11/30(月) 02:02:57.70ID:owcTZSsV
>>2
それだと
>
>
1

になってしまうのでは?
2020/11/30(月) 02:36:49.33ID:+w97lXkL
http://mevius.2ch.net/test/read.cgi/tech/1594702426/995

Haskell

import Data.List

maxConsSub x = let
ss = concat $ map ( tail . reverse . tails ) $ tail $ inits x
comp xs ys = compare ( sum xs ) ( sum ys )
in maximumBy comp ss

main = print $ maxConsSub [ -2, 1, -3, 4, -1, 2, 1, -5, 4 ]
2020/11/30(月) 02:50:11.69ID:8vxB1EQV
前スレ>>995
https://ideone.com/DcLpHj
2020/11/30(月) 03:40:18.85ID:r8rQ87Qr
サブ配列とは、連続している領域の事か?
どこかで、こういう問題を見た事があるような気がする

これで、配列の前後がつながっている、循環バージョンもやってみれば?
2020/11/30(月) 11:41:04.85ID:6DeIDSHb
前スレ>>995 Perl5

@a = qw[-2 1 -3 4 -1 2 1 -5 4];
sub f {
 my ($i, $j) = @_;
 return $t[$i][$j] if defined $t[$i][$j];
 $t[$i][$j] = $a[$i] + ($i < $j ? f($i+1, $j) : 0);
}
for $i (0..$#a) {
 for $j (reverse 0..$#a) {
  my $v = f($i, $j);
  if (!defined($max) or $max < $v) {
   $max = $v;
   ($s, $e) = ($i, $j);
  }
 }
}
print "@a[$s..$e]\n"


~ $ perl 18_995_sumsubarry_dp.pl
4 -1 2 1
109
垢版 |
2020/11/30(月) 21:53:55.46ID:Nq7K7NhK
>>9 Bugってんじゃん、解は変わらないけど無駄なとこ計算する

× for $j (reverse 0..$#a) {
   ↓
○ for $j (reverse $i..$#a) {


ついでっちゅうわけじゃないけどnaive版 Perl5

@a = qw[-2 1 -3 4 -1 2 1 -5 4];
use List::Util 'sum';
for $i (0..$#a) {
 for $j (reverse $i..$#a) {
  my $v = sum(@a[$i...$j]);
  if (!defined $max or $max < $v) {
   $max = $v;
   ($s, $e) = ($i, $j);
  }
 }
}
print "@a[$s..$e]\n";

実行
~ $ perl 18_995_sumsubarry_naive.pl
4 -1 2 1
11デフォルトの名無しさん
垢版 |
2020/12/01(火) 03:38:48.56ID:G7RpB3vG
前スレ>>971

前スレ 994 の Java のやつを見て Kotlin script に変換。

java.time.DayOfWeek.values().map { it.name.toLowerCase().capitalize() }.forEach(::println)

991 は java.text.DateFormatSymbols 使ったから順序を変える必要があったが
java.time.DayOfWeek 使えばその必要なかったんだな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況