プログラミングのお題スレ 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/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
2018/05/01(火) 02:00:54.53ID:bK+upqA8
>>124
>>121 >>exp(x) = Σx^n/n! = e^x
>なんでexp(x)とe^xを比較する議論の前提で、この2つが正しいことを利用してるの?
>循環論法です。破綻しています

いいえ循環論法ではありません
仮定は
exp(z) = Σz^n/n! が z ∈ C で収束すること…@
exp(z1 + z2) = exp(z1)exp(z2), z1, ze ∈C …A
のみです

z = x + jy と置いたとき
exp(z1 + z2) = exp(z1)exp(z2), z1, z2 ∈C…A
が成り立つ前提で
z1 = x, z2 = yj
とおいて
exp(x + yj) = exp(x)exp(yj)
と変形します

もともと exp(z) = Σz^n/n! と置いたのですから
x ∈R のとき、exp(x) = Σz^n/n!
Σx^n/n! = e^x の収束は別途長い議論を経ないといけませんが、ここでは既知としています

最終的には >>121
exp(x + jy) = e^x(cos(y) + j・sin(y))
を導きだすのが目的です
2018/05/01(火) 02:04:42.58ID:MakmSkau
数学荒らし本当うざ…
2018/05/01(火) 02:12:20.66ID:sD3/P01t
>>125
((a,b) => ({g:'c',c:'p',p:'g'})[a] == b)(d[0],d[1])
は単純に
({g:'c',c:'p',p:'g'})[d[0]] == d[1]
でよかった。
最初関数として作ってあったもので単純化し忘れ。
2018/05/01(火) 02:19:47.25ID:6vH9r7He
>>77 Perl5 >>83を書き込んだけど気に入らなかったので少し修正した。
@s = split '','213cba213cba213cba';
@k = grep{$s[$_] =~ /[a-z]/} 0..$#s;
@s[@k] = sort @s[@k];
print @s,"\n";

実行結果
$ perl 11_77_2.pl
213aaa213bbb213ccc
2018/05/01(火) 02:24:25.71ID:85dldNJr
>>126
>exp(x) = Σx^n/n! = e^x
において e^x = Σx^n/n! と勝手にしているのが結果を先取り(しかも誤謬)していて宜しくないと言っているのです
「複素解析の文脈」では w^z = exp(z*(p.v. log|w| + i*arg(w))) なのです
これは定義です。これが気に食わなくて、どうしても exp(x) = e^x を言いたいのであれば
より妥当性がありwell-definedな w^z の定義を提示してください
繰り返します。あなたは「e^z = exp(z)が成立するように、任意の複素数w, zに対して w^z を定義する」必要があります

>Σx^n/n! = e^x の収束は別途長い議論を経ないといけませんが、ここでは既知としています
Σx^n/n!が収束するだけでは弱くて、
「絶対収束」(絶対に収束するという意味ではありません)を仮定する必要があると言っているんですけど
まあ枝葉末節なので不問とします
2018/05/01(火) 02:26:11.46ID:bK+upqA8
>>124
>exp(x)が収束することしか仮定されていないためこの変形は成り立ちません
>きちんと絶対収束(absolute convergence)することを示すか仮定しましょう。

厳しいですね…手元の教科書(高木・解析概論、ただ結構いい加減な本だそうですが)の引き写しなんですが…
虚数単位を j と置いていることからもわかるように、工科系の出自で、厳密な話は苦手です

>なんでここにこんなにつっかかってくるんですかね……
そのようなつもりはなく、純粋に数学的関心から書いているものです
>>123-121 >>113 >>109 >>106 >>103 を見返しても問題はないと思いますが

>あなたはまず複素解析の文脈で任意の実数xに対して exp(x) = (2.7...)^x となる事を証明しなければなりません
>尤も、expは単射なのに対してa^zは多価関数なのでこれらが等しくないことは計算するまでもなく自明なんですが、
exp(z) = exp(z + 2nπj) なので exp(z) は周期関数であることはわかるのですが、
これ以上のことはちょっとわかりません、今日はここまででお休みします
お付き合いくださりありがとうございました
132デフォルトの名無しさん
垢版 |
2018/05/01(火) 02:37:06.62ID:D2CDUI2h
>>87
Kotlin
https://paiza.io/projects/lG5nWGdi-n7XwGLr0YAi_A
Javaのライブラリに日付や曜日の計算任せちゃってて自分ではほとんど何もやってません。
2018/05/01(火) 02:39:14.06ID:MakmSkau
スレタイも読めない数学荒らしが一族郎党苦しんで死にますように。
2018/05/01(火) 02:46:03.00ID:6vH9r7He
そこまでのろわなくてもよい希ガスるけど、、
数学的お題でもいいけど、明快なお題を出すか、回答を書き込むかを重視し
解釈のかみ合わない議論は程々にした方が医院ジャマイカ
2018/05/01(火) 03:31:48.56ID:7ekaWt6m
>>117 Emacs Lisp

(defun f (S)
(let ((s 0) (N 0))
(ignore-errors (loop (mapcar (lambda (c) (setq s (1+ (position c S :start s)))) "odai") (incf N)))
N))

(f "odaiodai") 2
(f "ooddaai") 1
(f "idao") 0
(f "ododoadioadioadioadioadioadiodaioadodioadiaodi") 5
136デフォルトの名無しさん
垢版 |
2018/05/01(火) 04:52:28.26ID:D2CDUI2h
>>102
Kotlin
https://paiza.io/projects/bk-KHJlrtxxPPYLndwrHvA
137デフォルトの名無しさん
垢版 |
2018/05/01(火) 05:19:23.17ID:D2CDUI2h
>>117
Kotlin
https://paiza.io/projects/iL8CfccFm8DLlbB5dA63zQ
138デフォルトの名無しさん
垢版 |
2018/05/01(火) 05:47:58.01ID:D2CDUI2h
>>117
Perl
正規表現のパターンを作ってループさせてみました。
https://paiza.io/projects/pcQMuxJqlGR75LNkXho93w
2018/05/01(火) 07:17:35.34ID:dg2b7E11
>>131
純粋に数学的関心ならもうプログラミング関係ないんだから、適切な板、スレを探してそっちで好きなだけやってこい
140デフォルトの名無しさん
垢版 |
2018/05/01(火) 08:38:29.97ID:DfUAZvBS
>>102 Common Lisp
https://ideone.com/vtkIq4
141デフォルトの名無しさん
垢版 |
2018/05/01(火) 09:28:24.04
数学やってる奴は頭悪いってことは分かった
2018/05/01(火) 09:42:49.56ID:k1G9EgK2
数学は別にいいんだが難しすぎるのはちょっとな
簡単なお題なら個人的に歓迎
143デフォルトの名無しさん
垢版 |
2018/05/01(火) 10:53:36.69ID:DfUAZvBS
>>117 Common Lisp
https://ideone.com/84mgEu
2018/05/01(火) 11:01:22.65ID:V5+E1IVs
>>117 Squeak/Pharo Smalltalk

| fn |
fn := [:str |
| strm odai count |
strm := str readStream.
odai := 'odai' readStream.
count := 0.
[strm atEnd] whileFalse: [
((strm skipTo: odai next) and: [odai atEnd])
ifTrue: [odai reset. count := count + 1]
].
count
].

fn value: 'odaiodai'. "=> 2 "
fn value: 'ooddaai'. "=> 1 "
fn value: 'idao'. "=> 0 "
fn value: 'ododoadioadioadioadioadioadiodaioadodioadiaodi'. "=> 5 "
2018/05/01(火) 11:23:10.29ID:PxRnJhKl
>>102 Squeak/Pharo Smalltalk

| numOfWinnersOf |
numOfWinnersOf := [:jkStr |
| arr set |
arr := jkStr asArray collect: [:chr | 'gcp' indexOf: chr].
(set := arr asSet) size = 2 ifFalse: [0] ifTrue: [
| one other |
one := set anyOne. other := set remove: one; anyOne.
arr occurrencesOf: (one - other \\ 3 = 2 ifTrue: [one] ifFalse: [other])
]
].

numOfWinnersOf value: 'gccgc'. "=> 2 "
numOfWinnersOf value: 'ggggggg'. "=> 0 "
numOfWinnersOf value: 'cppcppppccpppppc'. "=> 5 "
numOfWinnersOf value: 'cppcppppccpgpppc'. "=> 0 "
2018/05/01(火) 11:50:43.04ID:PxRnJhKl
>>80 Squeak/Pharo Smalltalk

| fn |
fn := [:ps |
ps asSet size = 4 and: [
ps noneSatisfy: [:p1 |
[:p2 :p3 :p4 |
(p3 - p2 crossProduct: p4 - p2) = 0 or: [p1 insideTriangle: p2 with: p3 with: p4]
] valueWithArguments: (ps copyWithout: p1)
]
]
].

fn value: {0@0. 1@0. 1@1. 0@1}. "=> true "
fn value: {0@0. 1@1. 1@0. 0@1}. "=> true "
fn value: {0@0. 2@0. 1@1. 0@2}. "=> false "
fn value: {0@0. 1@1. 2@2. 3@3}. "=> false "
fn value: {0@0. 0@0. 0@0. 0@0}. "=> false "
2018/05/01(火) 12:02:35.06ID:pz418p4m
>>117
お題のサンプル程度なら正規表現で十分かと
PowerShell
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('odaiodai').Count
>>
2
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('ooddaaii').Count
>>
1
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('idao').Count
>>
0
PS C:\> ([regex]'o.*?d.*?a.*?i.*?').Matches('ododoadioadioadioadioadioadiodaioadodioadiaodi ').Count
>>
5
2018/05/01(火) 12:07:06.40ID:70o2W7dO
文字をATCGにして長さ1億くらいにすればプログラミングっぽくなるんじゃねえの
149デフォルトの名無しさん
垢版 |
2018/05/01(火) 12:28:06.18ID:UGhOjMxe
【安全デマにブーメラン】 山口が自殺したら、次は城島、他のメンバーも酷い運命、食べて応援が応報に
http://rosie.5ch.net/test/read.cgi/liveplus/1525137558/l50
2018/05/01(火) 12:30:10.65ID:in398Y2z
お題
大きさW×Hでポケットのないビリヤード台を想像してください。
左下の座標を(0,0)、右上の座標を(W,H)とします。
位置(0,0)から右上に向かって毎秒(a,b)の速度でボールを射出したとき、
ボールが位置(0,0)に戻ってくるのは何秒後でしょうか?
ボールの大きさや摩擦などは無視します。

[input]
W H a b (すべて正の整数)

[example]
2 4 1 1 -> 8
3 4 2 1 -> 24
4 5 2 4 -> 20
1 2 10 5 -> 0.8
2018/05/01(火) 13:50:08.69ID:NcJxSmfh
公式があるね。
周期=2WH/gcd(aH,bW)
(gcdは最大公約数)
2018/05/01(火) 13:56:33.70ID:w7H89JvO
>>150 Perl5
use feature 'say';
for (<DATA>) {
chomp;
($W, $H, $a, $b) = split;
($x, $y, $t) = 0x3;
($w, $h) = ($W, $H);
do {
($w, $h) = (2*$w, 2*$h);
($tx, $ty) = ($w/$a, $h/$b);
$t = ($tx < $ty) ? $tx : $ty;
($x, $y) = ($a*$t, $b*$t);
} while ($x % (2*$W) != 0 or $y % (2*$H) != 0);
say "$_ -> $t";
}
__DATA__
2 4 1 1
3 4 2 1
4 5 2 4
1 2 10 5

実行結果
$ perl 11_150.pl
2 4 1 1 -> 8
3 4 2 1 -> 24
4 5 2 4 -> 20
1 2 10 5 -> 0.8
2018/05/01(火) 13:59:50.83ID:w7H89JvO
>>151
やっぱ公約数に帰結するんだ、
>>152書いてて繰り返し不要な解法がありそうだという気がしてきた
まいいや自分で考えることも面白いから
2018/05/01(火) 15:18:38.67ID:V5+E1IVs
>>150 Squeak/Pharo Smalltalk

| fn |
fn := [:W :H :a :b |
| time |
time := 2 * W * H / (b * W gcd: a * H).
time isInteger ifTrue: [time] ifFalse: [time asFloat]
].

fn valueWithArguments: #(2 4 1 1). "=> 8 "
fn valueWithArguments: #(3 4 2 1). "=> 24 "
fn valueWithArguments: #(4 5 2 4). "=> 20 "
fn valueWithArguments: #(1 2 10 5). "=> 0.8 "
2018/05/01(火) 19:12:45.94ID:sD3/P01t
>>117 javascript
var f = s => {console.log((s.match(/o.*?d.*?a.*?i.*?/g)||[]).length)}
f('odaiodai') //=> 2
f('ooddaai') //=> 1
f('idao') //=> 0
f('ododoadioadioadioadioadioadiodaioadodioadiaodi') //=> 5
>>147と同じ
2018/05/01(火) 20:49:51.17ID:2ktnnBej
>>102 ruby
https://ideone.com/f8m9QV
2018/05/01(火) 21:15:49.14ID:oZjmv7dj
お題
大きさが(X, Y, Z)のナップサックに大きさが(x_i, y_i, z_i)で価値がv_iの荷物を価値の総和が最大になるように詰めたい
X Y Z N
x_1 y_1 z_1 v_1

x_N y_N z_N v_N
と荷物及びナップサックが与えられた時、最大の価値を求めよ
可能ならどれを詰めたかも求めよ
なお荷物は回転させて詰めても良いものとする
2018/05/01(火) 21:36:00.67ID:2ktnnBej
>>117 ruby
https://ideone.com/4Ra0WG
2018/05/01(火) 22:01:39.67ID:bRlEbj+U
ナップザックというか箱だなそれ (雑感)
160デフォルトの名無しさん
垢版 |
2018/05/01(火) 22:40:45.68ID:7ekaWt6m
お題
政令指定都市名を受け取り, 隣接する区を異なる色になるように塗り分けるのに必要な最少の色数を返す.

f(Sagamihara) => 2
f(Yokohama) => 4
161デフォルトの名無しさん
垢版 |
2018/05/01(火) 22:43:51.19
>>157は、巡回セールスマン問題に並んで有名なナップサック問題である。
なお、この手の問題をNP完全問題だとかNP困難問題だとか呼ぶのは
「ナップサック」(NaPpsuck)に由来する。
2018/05/01(火) 22:47:15.06ID:Bi25k6nv
non-polynomial
2018/05/01(火) 22:53:05.87ID:Q2z4i3xl
数学荒らし死ね
2018/05/01(火) 22:54:11.24ID:RbfjP2ra
自分が理解できないからって数学荒らし呼ばわりは惨めすぎるね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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