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

■ このスレッドは過去ログ倉庫に格納されています
2018/04/24(火) 20:45:14.49ID:ZY7R7Sru
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/

【出題と回答例】
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/

宿題は宿題スレがあるのでそちらへ。
2018/04/25(水) 15:30:57.61ID:ucQtsZek
>>24
0 [0]7362:45[0]
5 0[]7362:4[5]0
1 0[]7362:[4]50
3 0[7]362:[]450
3 07[]362:[4]50
1 07[]362:4[5]0
2 07[3]62:45[]0
2 073[]62:4[5]0
1 073[]62:[4]50
2 073[6]2:[]450
2 0736[]2:[4]50
1 0736[]2:4[5]0
3 0736[2]:45[]0
3 07362[]:4[5]0
1 07362[]:[4]50
6 07362[:]450
36時間
2722
垢版 |
2018/04/25(水) 15:37:00.23ID:pPLIJyjZ
>>26
ありがとう
問題は理解できていて頭が悪いだけでした
2823
垢版 |
2018/04/25(水) 18:07:14.08ID:eqJJBtIM
>>25
Bのa・b 戦略が、共に5点の同点で、その2つをA に戻すから、

Aは両方を比較しなければならないから、複雑だと思って
2018/04/25(水) 19:23:53.90ID:/CvNfD/i
>>11
やってみた
https://ideone.com/LsjBLX

結果
"073:0" => 18
"07362:450" => 36
"06464:36470" => 46
"0827171:28480" => 66
"0737491:28180" => 146
"05374734372747484:184618186912120" => 400


一箇所だけ>>11と違うな
2018/04/25(水) 20:04:18.92ID:8AWpTaB2
>>11って解無しのパターンってあるのかな?
2018/04/25(水) 20:26:41.27ID:ucQtsZek
>>29 手計算
0 [0]6464:3647[0]
6 0[6]464:3647[]0
2 06[4]64:3647[]0
2 064[6]4:3647[]0
2 0646[4]:3647[]0
3 06464[]:364[7]0
3 0646[4]:36[4]70
2 064[6]4:3[6]470
2 06[4]64:3[]6470
2 0[6]464:3[6]470
3 0[]6464:[3]6470
3 0[6]464:[]36470
2 06[4]64:[]36470
2 064[6]4:[]36470
2 0646[4]:[]36470
6 06464[:]36470

>>30
無いんじゃね?
3229
垢版 |
2018/04/25(水) 21:13:14.97ID:/CvNfD/i
>>29はバグってた
直したら>>11と一致しました

https://ideone.com/ECmxkW

常に解がありそうだけど証明はどうやるんだろ
2018/04/25(水) 21:16:36.07ID:8AWpTaB2
ちょっと考えてみたけど至る所微分不可能な山ではない限り解は存在するね
3429
垢版 |
2018/04/25(水) 21:33:09.38ID:/CvNfD/i
適当に折り返すことによって山谷の数を合わせられる
あとは略、って感じか
3529
垢版 |
2018/04/25(水) 21:38:29.30ID:/CvNfD/i
数じゃなく高さを合わせるのか
眠くて頭が回らない
2018/04/28(土) 14:30:11.12ID:O8BM7Wua
e^(z) + 1 = 0 を満たす全ての z∈C の絶対値の集合をSとする.
この時、Sの中でN番目(N≦10^5)に小さい元を求めよ.
なお, e = Σ{n∈N}(1/n!) である.
2018/04/28(土) 14:49:49.33ID:8V4fYuem
数学じゃん。まーたセンセか。
数学板で相手してもらえないのかな?
2018/04/28(土) 14:54:49.91ID:dXz/YQDX
つまんね
2018/04/28(土) 16:51:43.06ID:bUTNgJY5
N番目に大きな正の奇数を求めよ、みたいな
2018/04/28(土) 17:14:48.72ID:GokrK/uL
簡単なところで。

【お題】
与えられた整数のリストを、
すべての奇数がすべての偶数の前に来るよう並べ替えなさい。
ただし奇数、偶数、それぞれの順番は変えないこと。

[-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7]

-> [-1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]
2018/04/28(土) 17:36:46.27ID:PugBvw3H
>>40 Java
https://ideone.com/7ibDgO
しんぷる
2018/04/28(土) 18:15:08.94ID:7FInXxAw
J

((#~2&|),(#~2&|&>:)) -1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7

出力
_1 9 3 _5 _7 _9 _7 _2 _8 _2 _6 10 _8

(Jでは_が負の符号)
2018/04/28(土) 18:19:04.17ID:XQamhGXx
>>40 Perl

@a = (1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7);
@o = grep{$_ & 1} @a;
@e = grep{!($_ & 1)} @a;
use feature 'say';
use Data::Dump qw(dump);
say dump [@o, @e];


$ perl 11_41.pl
[1, -9, -3, 5, 7, 9, 7, 2, 8, -2, -6, -10, -8]
2018/04/28(土) 18:21:14.38ID:PugBvw3H
> _1 9 3 _5 _7 _9 _7 _2 _8 _2 _6 10 _8
Jは全くわからんが、出力おかしくないけ?
_1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8 になるはず?
2018/04/28(土) 19:00:22.31ID:bUTNgJY5
>>44
おかしい。こんな短いものでバグ作るとは。
2018/04/28(土) 19:06:05.69ID:8V4fYuem
なんだJニキたいしたことなかったんだな。ガッカリだわ
2018/04/28(土) 19:06:51.88ID:bUTNgJY5
>>42
>((#~2&|),(#~2&|&>:)) -1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7

こう書かなきゃダメだった
((#~2&|),(#~2&|&>:)) _1 2 8 _9 _2 _3 _6 _10 _8 5 7 9 7
2018/04/28(土) 19:07:19.36ID:bUTNgJY5
1か月くらいしかやってないから
ガタガタブルブル
2018/04/28(土) 19:11:02.35ID:PugBvw3H
入力に , 入れてたからおかしくなったのけw
2018/04/28(土) 19:16:25.16ID:bUTNgJY5
カンマはあっても良いんだけど _2 を -2 と書くと
,- なる演算子のコンビネータで世にも奇妙な動きになる
2018/04/28(土) 19:18:49.62ID:PugBvw3H
やっぱりJわからんww
2018/04/28(土) 19:20:47.82ID:e4v0vK3x
違った

1,2,3 => 1 2 3
1, -2, 3 => 1 _2 _3

マイナスがそれまで連結したそれより右、
上の例だと 2 3 全体に作用してた
2018/04/28(土) 20:02:26.64ID:amQJLuCm
>>40
ソートするだけやん...

C++
https://ideone.com/EX8gEd
2018/04/28(土) 20:34:22.01ID:7FInXxAw
あー!
ソートするだけか。グッと短くなるな
J
(\:2&|) _1, 2, 8, _9, _2, _3, _6, _10, _8, 5, 7, 9, 7

結果
_1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8
2018/04/28(土) 21:15:59.30ID:Ie6V8ZCt
>>40 Squeak/Pharo Smalltalk

| fn1 fn2 |
fn1 := [:arr | (arr select: #odd), (arr select: #even)].
fn2 := [:arr | (arr sort: [:x | x odd asBit] descending) asArray].

fn1 value: #(-1 2 8 -9 -2 -3 -6 -10 -8 5 7 9 7).
"=> #(-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8) "
fn2 value: #(-1 2 8 -9 -2 -3 -6 -10 -8 5 7 9 7).
"=> #(-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8) "
56デフォルトの名無しさん
垢版 |
2018/04/28(土) 21:55:04.43ID:efxIQEuI
>>40
# Rubyで。
def f040(a)
a.select(&:odd?) + a.select(&:even?)
end
2018/04/28(土) 21:58:00.35ID:fbonRnOo
>>40 Perl

@s = (-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7);
push @{$a[$_ & 1]}, $_ for @s;
($e, $o) = @a;
print "@$o @$e\n";

$ perl 11_40.pl
-1 -9 -3 5 7 9 7 2 8 -2 -6 -10 -8
2018/04/28(土) 21:58:07.26ID:4vnB69wL
[[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ]
59デフォルトの名無しさん
垢版 |
2018/04/28(土) 22:24:14.64ID:kOoyKfN/
安定なソートである必要は無いのかな
2018/04/28(土) 22:45:12.30ID:amQJLuCm
>>59
やり方による
>>53みたいな奴だと安定ソートが必要
2018/04/29(日) 00:30:13.18ID:VMPsXvec
>>36って S = {(2m + 1)π / √((2nπ)^2 + 1)|(m, n)∈N^2}だから最小値存在しなくね?
複素数の複素数乗って多価関数だよね?
2018/04/29(日) 01:45:04.33ID:eN7o88HV
>>61
e は実数で S = {(2n-1)π} じゃないの。
数学は良く知らんけど。

[[[{[{{]] を見て反省してJの良さが伝わりやすいように>>54をわかりやすく書き直してみた

定義
data =: _1 2 8 _9 _2 _3 _6 _10 _8 5 7 9 7
modulo =: |~
ascending_sort_by = \:

実行
data ascending_sort_by 2 modulo data

結果
_1 _9 _3 5 7 9 7 2 8 _2 _6 _10 _8

これを分かりにくくして行くと>>94になる

2項演算子 f と単項演算子 g から単行演算子 (f g)、
(f g) x の値は x f (g x) を作れる仕組み

2項演算子 f の左側引数をxに固定した単項演算子 x&f、(x&f) y の値は x f y を作れる仕組み

これらを使って「2での剰余をキーとしてソートする
単行演算子」を作って data に適用する形に書き直すと

(ascending_sort_by (2&modulo)) data

これを直に書いて不要な空白や括弧を取ると>>94
(\:2&|) data
2018/04/29(日) 01:48:41.58ID:eN7o88HV


\ になってる文字は本来バックスラッシュ
Jはスマフォアプリがあるので暇で困っている人にはパズル的に遊ぶのにお勧め
2018/04/29(日) 02:09:53.25ID:VMPsXvec
>>62
z := x + y*i (x, y∈R)
e^z = -1
⇔ exp((x + y*i)(p.v.Log|e| + i*arg(e))) = -1
⇔ exp(x - 2nπy)*exp((2nπx + y)i) = -1
⇔ x = 2nπy and 2nπx + y = (2m + 1)π
⇔ x = 2nπy and y = (2m + 1)π/((2nπ)^2 + 1)
⇔ z = (2m + 1)π/(2nπ - i)
⇒ |z| = |2m + 1|π/sqrt(4n^2π^2 + 1) (m, n∈N)
だからS = {(2n-1)π}はありえないよ
2018/04/29(日) 02:12:22.08ID:/ExMHkxk
>>40 Ocaml
https://ideone.com/tZmgi1
初めて扱った言語だから分かりやすさ優先
冗長だよなぁ
2018/04/29(日) 02:23:13.34ID:p2Z/45DS
>>62
>>61
>modulo =: |~
~ はタイプミス(不要)でしたごめんなさい寝ます
2018/04/29(日) 03:00:09.99ID:zLWhc+ki
>>40 javascript
var ary = [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7];

// 条件判定が二倍走るのが気に食わない
var ans = [...ary.filter(n => n % 2), ...ary.filter(n => !(n % 2))];
console.log(ans);

// のでこうした。長い…読むとき引っ掛かりそう
var ans = ary.reduce((acc, n) => n % 2 ? {odd: [...acc.odd, n], even: acc.even} : {odd: acc.odd, even: [...acc.even, n]}, {odd: [], even: []});
console.log([...ans.odd, ...ans.even]);

// 結局俺にはこれが分かりやすくていいや
var odd = [], even = [];
ary.forEach(n => {n % 2 ? odd.push(n) : even.push(n);});
console.log([...odd, ...even]);
2018/04/29(日) 05:45:46.05ID:hIO/B/Lz
>>40
Kotlin
https://paiza.io/projects/psvjfVlHA_h2ywBb3amg3Q

C
https://paiza.io/projects/iZQ1V6L34LthEdqvQsRNJQ
2018/04/29(日) 05:54:20.45ID:hIO/B/Lz
>>43
やってることほとんど同じだけど短くできるので改造してみました。
Perl
https://paiza.io/projects/hmeuU1NTBlSqUtbFr6Vn2Q
70デフォルトの名無しさん
垢版 |
2018/04/29(日) 07:08:41.98ID:BEZTP3Wm
>>40 Common Lisp
https://ideone.com/7FvGqn

計測してみたらsortが一番遅かった
https://ideone.com/CzpnHR
2018/04/29(日) 09:01:58.05ID:aHYSui5W
>>40 ruby
p [-1, 2, 8, -9, -2, -3, -6, -10, -8, 5, 7, 9, 7].partition(&:odd?).flatten
2018/04/29(日) 09:22:53.62ID:aHYSui5W
>>40 ocaml
https://ideone.com/Izv76M

is_oddはぐぐって見つけたのの丸パクリ
2018/04/29(日) 10:27:23.47ID:aHYSui5W
>>40 rust
https://ideone.com/epTHxQ

タプルにflattenとかできたらよかったのに…
74デフォルトの名無しさん
垢版 |
2018/04/29(日) 16:09:08.42ID:hIO/B/Lz
>>40
Kotlin でも >>71 そっくりに書けることに気付いたので >>68 を fork して書き換えてみた。
https://paiza.io/projects/Ilw66tbpxElWvi1lSmKU3Q
2018/04/29(日) 20:33:37.53ID:My7UiDyw
[[[ []]]]*[[ [][] ][] } } {} [[[
2018/04/29(日) 20:42:22.87ID:/ExMHkxk
しっかし、良問なお題だな……
2018/04/29(日) 21:35:33.15ID:f+z04ZEq
お題: 文字列をソートしなさい。ただし、英字のみをソートし他はそのままにすること。
例:
 "213cba213cba213cba" -> "213aaa213bbb213ccc"
2018/04/29(日) 21:43:39.24ID:VMPsXvec
>>77 Riby

"213cba213cba213cba".yield_self{|v|r=/[a-zA-Z]/;s=v.scan(r).sort;v.gsub(r){s.shift}} #=> "213aaa213bbb213ccc"
2018/04/29(日) 22:33:55.68ID:aHYSui5W
>>77 octave
https://ideone.com/qppgil
2018/04/29(日) 22:50:48.02ID:WuAwAiPA
お題
二次元平面上の4点が与えられる。この4点で凸四角形を構成できるか判定せよ。
※4点の順番は、時計回りや反時計回りとは限らない。
(0, 0), (1, 0), (1, 1), (0, 1) => true
(0, 0), (1, 1), (1, 0), (0, 1) => true
(0, 0), (2, 0), (1, 1), (0, 2) => false
(0, 0), (1, 1), (2, 2), (3, 3) => false
(0, 0), (0, 0), (0, 0), (0, 0) => false
2018/04/29(日) 22:53:34.50ID:yO7NcvMF
そんな空気読めないから学生に不人気なんだよ数学板帰れ
2018/04/29(日) 23:11:38.79ID:wF7FhsU6
>>77 Squeak/Pharo Smalltalk

| fn |
fn := [:str |
 | letters |
 letters := OrderedCollection new.
 ((str asArray gather: [:chr | chr isLetter
  ifTrue: [letters add: chr. '{', letters size asString, '}']
  ifFalse: [chr asString]]
 ) as: String) format: letters sort
].

fn value: '213cba213cba213cba' "=> '213aaa213bbb213ccc' "
2018/04/29(日) 23:14:55.98ID:UI+loYQZ
>>77 Perl5

@s = split '', '213cba213cba213cba';
@i = 0..$#s;
@k = grep{$s[$_] =~ /[a-z]/} 0..$#s;
@l = sort @s[@k];
$s[$k[$_]] = $l[$_] for 0..$#k;
use feature 'say';
say @s;


$ perl 11_77.pl
213aaa213bbb213ccc
2018/04/29(日) 23:19:13.69ID:UI+loYQZ
>>83
@i = 0..$#s;
この行、要らなかった、消し忘れた…orz
2018/04/29(日) 23:22:03.47ID:WuAwAiPA
>>77 C++
#include <iostream>
#include <string>
#include <algorithm>
#include <boost/iterator/filter_iterator.hpp>

template <typename FwdIt>
void selection_sort(FwdIt first, FwdIt last) {
for (auto it = first; it != last; ++it) std::iter_swap(it, min_element(it, last));
}

int main() {
std::string s;
std::cin >> s;
selection_sort(boost::make_filter_iterator(&::isalpha, s.begin(), s.end()), boost::make_filter_iterator(&::isalpha, s.end(), s.end()));
std::cout << s << std::endl;
}
2018/04/29(日) 23:46:37.03ID:wPb3/3m7
>>77
Haskell
アルゴリズム自体は単純だけどコードが泥臭い
もっと綺麗に書けそう
import Data.Char
import Data.List
solve [] ys = ([],reverse $ sort ys)
solve (x:xs) ys = if isAlpha x
then let (vs,w:ws) = solve xs (x:ys) in (w:vs,ws)
else let (vs,ws) = solve xs ys in (x:vs,ws)
main = putStrLn $ fst $ solve "213cba213cba213cba" []
2018/04/30(月) 00:05:47.30ID:873ZFTYn
お題
西暦X年のプレミアムフライデーを列挙せよ
2018/04/30(月) 00:14:03.81ID:wP9Edy/s
それは概念的な方?それとも実際に仕事に影響する方?
後者ならプレミアムフライデー列挙は0文字でできるが
2018/04/30(月) 03:32:32.41ID:XX4FB8lc
>>77
C
https://paiza.io/projects/Oy8gIsyfgJX7t7rSEPnVkQ
2018/04/30(月) 03:49:27.01ID:XX4FB8lc
あれ?strdup() で警告出てるな。strdup() って標準ではないか。
まあでもCコンパイラのアバウトな処理によって動くバイナリは作られたようだがw
やりたいことは分かると思うのでそのままにしておく。
2018/04/30(月) 04:14:00.17ID:XX4FB8lc
>>77
Kotlin
https://paiza.io/projects/YLQlblIMPLj68rZq1YBibw
92デフォルトの名無しさん
垢版 |
2018/04/30(月) 07:20:36.76ID:aMecU4PQ
>>77 Common Lisp
https://ideone.com/wPfWhC
2018/04/30(月) 09:43:30.53ID:6GiCfUEC
>>77 Squeak/Pharo Smalltalk

| fn |
fn := [:str |
| letters |
letters := (str select: #isLetter) sort readStream.
str collect: [:chr | chr isLetter ifTrue: [letters next] ifFalse: [chr]]
].

fn value: '213cba213cba213cba' "=> '213aaa213bbb213ccc' "
2018/04/30(月) 11:03:34.34ID:6GiCfUEC
>>87 Squeak/Pharo Smalltalk

| preKinsOf |
preKinsOf := [:year |
(year asInteger asYear months collect: [:month |
(month dates select: [:date | date weekday == #Friday]) last]
) reject: [:date | date mmddyyyy beginsWith: '4/29']
].

preKinsOf value: 2022

"=> {28 January 2022 . 25 February 2022 . 25 March 2022 . 27 May 2022 .
24 June 2022 . 29 July 2022 . 26 August 2022 . 30 September 2022 .
28 October 2022 . 25 November 2022 . 30 December 2022} "
2018/04/30(月) 11:06:46.51ID:51rF4oVe
>>77
>>86のアロー版
import Control.Arrow
import Data.Char
import Data.List
solve ([],_) = ([],[])
solve ((x:xs),~yss@(y:ys)) = if isAlpha x
then first (y:) $ second (x:) $ solve (xs,ys)
else first (x:) $ solve (xs,yss)
main = putStrLn $ loop (second sort . solve) "213cba213cba213cba"
2018/04/30(月) 13:22:57.51ID:9wPwzi/d
[[[ [ "[]" ]]] [] [][[[ [] ]][]
2018/04/30(月) 15:39:38.12ID:3TseVeeC
>>77 Emacs Lisp

(defun f (a)
(flet ((alphaumericp (c) (string-match "[A-Za-z]" (string c))))
(let* ((b (concatenate 'list a))
(c (sort (remove-if-not #'alphaumericp b) #'<)))
(concat (mapcar (lambda (d) (if (funcall #'alphaumericp d) (pop c) d)) b)))))
f

(f "213cba213cba213cba")
"213aaa213bbb213ccc"
2018/04/30(月) 19:55:09.82ID:AG7SQVmm
>>80 Perl5
https://ideone.com/2NE6z1
2018/04/30(月) 20:05:33.19ID:AG7SQVmm
>>98
書き込んでから気がついたけど、お題の5個の入力では問題を起こさないが
差ベクトルが短すぎる場合や外積の面積が細過ぎる場合の打ち切りは、
nextで一階層ブロック脱出ではなく更にもう一階層外側のloopに脱出すべきか…orz
ま、いいか、テヘペロ
2018/04/30(月) 20:32:21.58ID:3H79VXon
>>64
e^(πi) = e^(3πi) = e^(5πi) = ... = -1 じゃないの?
2018/04/30(月) 21:29:33.47ID:i4YlDPUd
>>100
e^z = -1 に対して z = (2m + 1)i は十分条件でしかないよ
必要十分条件は z = (2m + 1)π/(2nπ - i) なの
で今 e^z = -1 を満たす「すべての」zって言われてるから十分条件じゃ意味なのは分かる?
そもそも十分条件って言葉は知ってるかな?
exp(x) と e^(x) が違うことはわかってる?
2018/04/30(月) 21:50:54.13ID:vxN19J44
お題
大人数で一斉にじゃんけんを行った
各人の手のリストが与えられるのでその中で勝者が何人いるか答えよ
(g=グー,c=チョキ,p=パー)

gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0
2018/04/30(月) 21:51:16.28ID:TVB5RPq5
>>101
それ、おかしくない?
m = n = 1 のとき、
すなわち e^((3*pi)/(2*pi - i)) を wolfram-alpha に食わせてみたんだが、-1 にならない
http://www.wolframalpha.com/input/?i=e%5E((3*pi)%2F(2*pi+-+i))

>>64
exp((x + y*i)(p.v.Log|e| + i*arg(e))) = -1
ってどういう意味なの?
2018/04/30(月) 22:01:50.32ID:XN8sO4Rn
>>102 C++
https://ideone.com/C34KkK
2018/04/30(月) 22:07:39.31ID:i4YlDPUd
>>103
exp(z) := Σ{n∈N}z^n/n!
pv log(z) := log(z)の主値
arg(z) := 複素数zの偏角
リンクの wolfram-alpha はそりゃ値が一致しないよ。前提が違うんだから
2018/04/30(月) 22:51:37.38ID:TVB5RPq5
>>101
>>105

>>101
z = (2m + 1)π/(2nπ - i)
これを愚直に展開すると
z = (2m + 1)・2nπ/(4n^2・π^2 + 1) + j(2m + 1)(4n^2π^2 + 1))…@

一方
複素指数関数を e^z = Σz^n/n! と定義して
z = x + yj(x, y ∈ R) のとき、
|e^z| = |e^x|、かつ |e^yj| = 1
ここで e^z = -1 だから
|e^z| = |e^x| = 1, x ∈ R
x = 0
にしかならないけれども、@のzの実部はm, n によっていろいろ変わるのはおかしいね
2018/04/30(月) 22:55:46.76ID:i4YlDPUd
>>106
いやだから e^z(2.718281828...のz乗) と exp(z) は別物だって言ってんじゃん
わざと嫌がらせしてる?
2018/04/30(月) 22:58:05.91ID:3TseVeeC
>>102 Emacs Lisp

(defun f (g)
(let* ((c (concatenate 'list g))
(p (remove-duplicates c)))
(if (= (length p) 2)
(count (cdr (assoc (apply #'+ p) '((202 . ?g) (211 . ?c) (215 . ?p)))) c) 0)))

(f "gccgc") 2
(f "ggggggg") 0
(f "cppcppppccpppppc") 5
(f "cppcppppccpgpppc") 0
2018/04/30(月) 23:18:07.22ID:TVB5RPq5
>>107
え?
z = x + yj
exp(z) = Σz^n/n! と定義するのと
exp(x + jy) = e^x・(cos(y) + j・sin(y)); x, y ∈R と定義するのとは同値でしょう?
後者を採用して、|exp(x + jy)| = |e^x|
e^z = -1 より |e^x| = 1, x ∈ R
だったら、やっぱり x = 0 しか取り得ないと思いますが…
2018/04/30(月) 23:25:43.22ID:i4YlDPUd
>>109
同じことを何度言えば理解してもらえるんですかね
x = 2.71828...とすると
x^z = exp(z log(x))
= exp(z(pv log|x| + i*arg(x))
= exp(z + 2nπzi)
exp(z + 2nπzi)とexp(z)が一般に同値な訳ないでしょ
何度も言うけどわかりました? (2.718...)^z と Σ{n∈N}(z^n/n!)は全く別の値なんです
2018/04/30(月) 23:41:24.15ID:i4YlDPUd
ついでになんか勘違いしてるみたいだから指摘しておきますけど
xが実数であっても exp(x) != (2.7...)^x じゃありませんからね(e.g. x=0.5などとすれば直ちに自明でしょう)
高校数学の感覚ではこれらは同じ値なのでしょうけど複素解析の文脈では指数関数は一般に多値関数ですからね
2018/04/30(月) 23:42:01.80ID:i4YlDPUd
誤字
xが実数であっても exp(x) = (2.7...)^x じゃありません
2018/04/30(月) 23:58:31.96ID:TVB5RPq5
>>112
z = x + yj,∈C, x, y ∈R において、
複素指数関数 exp(z) を
exp(z) = Σz^n/n! と定義する…@
exp(x + jy) = e^x・(cos(y) + j・sin(y)); x, y ∈R と定義する…A

@⇔Aであることを前提とすれば、

x ∈R において
exp(x)
= e^x(cos0 + j・sin0)(∵A)
= e^x(1 + j・0)
= e^x



xが実数なら exp(x) = (2.7...)^x

ですね

でも >>110 の欠点がみえない
exp(z) = exp(z + 2nπj)(複素指数関数の周期性)
なのは理解しているつもりなんですが
2018/05/01(火) 00:10:24.66ID:W5y6CuNF
>>113
再三再四申し上げますが一般に exp(z) と ネイピア数のz乗は別物です
あと何百回言えばこれを理解してもらえるんですかね
従ってAの定義は「exp(x + jy) = exp(x)・(cos(y) + j・sin(y))」としなければならないし
偽な命題を前提とすればそりゃどんな結論だって導けるってものです
というのも P ⊃ Q は P が偽の時常に真ですから
2018/05/01(火) 00:11:15.20ID:k1G9EgK2
プログラミングやってると数学学びたい欲求が出てくる
2018/05/01(火) 00:11:33.54ID:bMu1E696
同値の意味も知らないような数学の素人がなにか言い合いしてますねえ
2018/05/01(火) 00:29:59.90ID:zX/Wrdt+
お題
o,d,a,iからなる文字列Sが与えられる。
Sからいくつかの文字を取り除くことで"odai"をN回繰り返した文字列が得られたとする。
Nの最大値を求めよ。

odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> ?
2018/05/01(火) 00:33:21.72ID:6vH9r7He
>>102 Perl5
use feature 'say';
for (<DATA>) {
chomp;
my ($i, %h);
$h{$_}++ for split'';
%gcp = (g=>c, c=>p, p=>g);
delete @gcp{keys %h};
@r = keys %gcp;
$k = $gcp{$r[0]};
say "$_ -> ", (1 == @r) ? $h{$k} : 0;
}
__DATA__
gccgc
ggggggg
cppcppppccpppppc
cppcppppccpgpppc

実行結果
$ perl 11_102.pl
gccgc -> 2
ggggggg -> 0
cppcppppccpppppc -> 5
cppcppppccpgpppc -> 0
2018/05/01(火) 01:08:35.42ID:sD3/P01t
>>77 javascript
var{nums,wrds}=(str=>eval(`((nums,...wrds)=>({nums,wrds}))\`${str.replace(/[a-zA-Z]+/g,'\${"$&"}')}\``))('213cba213cba213cba')
console.log(String.raw(nums,...(wSrt=>wrds.map(w=>wSrt.splice(0,w.length).join``))([...wrds.join``].sort())))
2018/05/01(火) 01:09:16.19ID:6vH9r7He
>>117 Perl5
use feature 'say';
for (<DATA>) {
chomp;
@k = qw{o d a i};
$j = 0;
for ($n = 0; $n < length($_)>>2; $n++) {
for $c (qw{o d a i}) {
$i = index $_, $c, $j;
goto L1 if $i < 0;
$j = $i + 1;
}
}
L1:;
say "$_ -> ", $n;
}
__DATA__
odaiodai
ooddaai
idao
ododoadioadioadioadioadioadiodaioadodioadiaodi

実行結果
$ perl 11_117.pl
odaiodai -> 2
ooddaai -> 1
idao -> 0
ododoadioadioadioadioadioadiodaioadodioadiaodi -> 5
2018/05/01(火) 01:13:28.97ID:bK+upqA8
>>114
>一般に exp(z) と ネイピア数のz乗は別物です
それは心得ているつもりです。

以下、結構雑に書きますが、

exp(z)=Σz^n/n!…@
と定義する。
このときも@が収束すること、および
exp(z1 + z2) = exp(z1)exp(z2), z1, z2 ∈C…A
が成立することを暗黙の了解とする

z∈C, z = x + jy, x, y ∈R のとき
exp(z) = exp(x)exp(jy) …B(∵A)
exp(x) = Σx^n/n! = e^x
exp(jy) = 1 + (yj)/1! - y^2/2! - j・y^3/3! + y^4/4! + j・y^5/5! + …
=(1 - y^2/2! + y^4/4! - …) + j ・ (y/1! - y^3/3! + y^5/5! - …)
=cos(y) + j・sin(y)

すなわち exp(z) = e^x・(cos(y) + j・sin(y))…C

以上の議論は手元の教科書の引き写しです。
2018/05/01(火) 01:14:36.19ID:bK+upqA8
>>121 続き
>従ってAの定義は「exp(x + jy) = exp(x)・(cos(y) + j・sin(y))」としなければならないし
以上より exp(x + jy) = e^x・(cos(y) + j・sin(y)) …Cで問題ありません。

だから、x ∈ R とすれば exp(x) = e^x(cos0 + j・sin0) = e^x になります
つまり
>>114 をより正確にいえば
「exp(x) は e^x の自然な拡張」となり、>>112 は誤りとなります

また exp(z) の絶対値を考えると
.(exp(x + jy)) = √((e^x・cos(y))^2 + (e^x・sin(y))^2)
= e^x・√(cos^2(y) + sin^2(y))
= e^x
すなわち |exp(z)| = |e^x| すなわち複素指数関数の絶対値は引数の実部によって決まり、引数の虚部の影響を受けません
以上の議論は
https://ja.wikipedia.org/wiki/%E8%A4%87%E7%B4%A0%E6%8C%87%E6%95%B0%E5%87%BD%E6%95%B0
に書いてありました
2018/05/01(火) 01:33:38.84ID:bK+upqA8
>>122 続き
今 exp(z) = -1, z ∈C

>>122 Cより
exp(x + yj) = -1, x, y ∈R
e^x(cos(y) + j・sin(y)) = -1
e^x・cos(y) + j・e^x・sin(y) = -1…D

よってDの両辺の虚部が 0 だから

e^x・sin(y) = 0
e^x > 0 より sin(y) = 0
y = nπ…D(必要条件)
このとき
cos(y) = ±1

このときDの両辺の実部を比較して
e^x(±1) = -1
e^x > 0 だから cos(y) = -1 となるのはDの中でも y = (2n + 1)π, n ∈Zのときのみ
また y = (2n + 1)π のとき、e^x = 1, x = 0

>>109
exp(z) の絶対値は z の実部にのみ影響されます
exp(z) = -1 から |exp(z)| = 1
|exp(z)| = e^x
ですから
e^x = 1
これを満たすのは x = 0 のみ、という推論はどうでしょうか?
2018/05/01(火) 01:43:11.17ID:W5y6CuNF
>>121-123
>exp(x) = Σx^n/n! = e^x
なんでexp(x)とe^xを比較する議論の前提で、この2つが正しいことを利用してるの?
循環論法です。破綻しています

>exp(jy) = 1 + (yj)/1! - y^2/2! - j・y^3/3! + y^4/4! + j・y^5/5! + …
>=(1 - y^2/2! + y^4/4! - …) + j ・ (y/1! - y^3/3! + y^5/5! - …)
exp(x)が収束することしか仮定されていないためこの変形は成り立ちません
きちんと絶対収束(absolute convergence)することを示すか仮定しましょう。破綻しています

よって以後の議論は全て誤りですので参考になりません
殊に循環論法による誤謬は致命的ですね
あなたはまず複素解析の文脈で任意の実数xに対して exp(x) = (2.7...)^x となる事を証明しなければなりません
尤も、expは単射なのに対してa^zは多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
なんでここにこんなにつっかかってくるんですかね……
2018/05/01(火) 01:56:50.61ID:sD3/P01t
>>102 javascript
var f = s => {
var d = [...new Set(s)]
return d.length == 2
? ((a,b) => ({g:'c',c:'p',p:'g'})[a] == b)(d[0],d[1])
? s.match(new RegExp(d[0],'g')).length
: s.match(new RegExp(d[1],'g')).length
: 0;
}
console.log(f('gccgc')) //=> 2
console.log(f('ggggggg')) //=> 0
console.log(f('cppcppppccpppppc')) //=> 5
console.log(f('cppcppppccpgpppc')) //=> 0
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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