プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/
プログラミングのお題スレ Part18
■ このスレッドは過去ログ倉庫に格納されています
2020/07/14(火) 13:53:46.47ID:jW5p6F/e
760デフォルトの名無しさん
2020/10/27(火) 23:07:51.35ID:9NNPSda/ 結局>>742は数学的にはどういう意味なんやろ
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?
761253
2020/10/28(水) 00:01:38.74ID:Jno143Es 面白い記号だなそれ。
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う
762デフォルトの名無しさん
2020/10/28(水) 00:17:22.90ID:3yQQm3er Φρズと書いてハイロウズと読みます
763デフォルトの名無しさん
2020/10/28(水) 00:21:17.79ID:n11gpLQR 煽りでもなく素直に疑問なのだが>>760のどこら辺がわからないんだ?
正規分布の下りか?
正規分布の下りか?
764253
2020/10/28(水) 00:30:53.43ID:Jno143Es >>762
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ
と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って、お前の教室のホワイトボードじゃねんだぞ。
そんなんでどうっやって世の人と付き合ってんだか…
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ
と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って、お前の教室のホワイトボードじゃねんだぞ。
そんなんでどうっやって世の人と付き合ってんだか…
765253
2020/10/28(水) 00:40:32.18ID:Jno143Es 大体、P()てのは何の関数だ。
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない
お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ
いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない
お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ
いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる
766デフォルトの名無しさん
2020/10/28(水) 00:42:08.54ID:n11gpLQR768253
2020/10/28(水) 00:47:05.09ID:Jno143Es 簡単なことを
わざわざ難しいことのように書くのは
有能な人のすることではない
わざわざ難しいことのように書くのは
有能な人のすることではない
769デフォルトの名無しさん
2020/10/28(水) 00:51:02.28ID:n11gpLQR770253
2020/10/28(水) 01:00:33.01ID:Jno143Es >>769
別に落ち着いているけど
これか
https://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
これは言葉で書いたらもっと分かりやすくならないのか?
別に落ち着いているけど
これか
https://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
これは言葉で書いたらもっと分かりやすくならないのか?
771253
2020/10/28(水) 01:15:04.26ID:Jno143Es 結局 >>760 は
2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合
この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと
繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している
そういうことに気づきな
2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合
この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと
繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している
そういうことに気づきな
772デフォルトの名無しさん
2020/10/28(水) 01:17:27.13ID:6h0Rpnv/ 多分ですけど、あなた以外はそこまでわかりにくい表現だとは感じていないのだと思いますよ
773253
2020/10/28(水) 01:19:14.69ID:Jno143Es まじかw
そしたら回答山盛りだ
お前もさんも回答よろしくな
そしたら回答山盛りだ
お前もさんも回答よろしくな
774デフォルトの名無しさん
2020/10/28(水) 01:20:24.09ID:6h0Rpnv/ >>742の意味するところが数学的に自明になればおのずと回答も付くでしょう
775253
2020/10/28(水) 01:20:47.31ID:Jno143Es 蛇足だが、あの式で意味がわかった上で
まさか回答できなかったら、単なる無能だからな
まさか回答できなかったら、単なる無能だからな
777デフォルトの名無しさん
2020/10/28(水) 01:29:09.84ID:3yQQm3er778253
2020/10/28(水) 01:30:24.94ID:Jno143Es ふふ、それは
ヒ・ミ・ツ
ヒ・ミ・ツ
779デフォルトの名無しさん
2020/10/28(水) 01:43:43.54ID:3yQQm3er 教科書ないから高校数学 確率で一番上に出たやつ。
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html
やっぱ高校の教科書に載ってたよなあww
仮に載ってなかったとして大学で使う書籍にもP載ってないって?w
> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html
やっぱ高校の教科書に載ってたよなあww
仮に載ってなかったとして大学で使う書籍にもP載ってないって?w
> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど
780253
2020/10/28(水) 01:56:33.39ID:Jno143Es ゆとり以降だなそりゃ
781デフォルトの名無しさん
2020/10/28(水) 02:11:35.07ID:d52OC3St 恥の上塗りするくらいなら黙ってればいいのに
782253
2020/10/28(水) 02:16:39.09ID:FRCNqyyj じゃあ何か自慢の回答でもしてよ
783742
2020/10/28(水) 05:10:48.17ID:MEeLXnFm784デフォルトの名無しさん
2020/10/28(水) 06:02:02.77ID:W3KKdO+Q >>742 C
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た
785742
2020/10/28(水) 12:23:39.00ID:jim4KuYP >>784
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
786742
2020/10/28(水) 13:16:35.16ID:jim4KuYP 間違えました
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));
787デフォルトの名無しさん
2020/10/29(木) 00:16:48.93ID:GFOWX4AY お題:言語機能のみを使い単方向リストを実装しメソッドpushとpopを実装せよ
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
788デフォルトの名無しさん
2020/10/29(木) 00:52:01.80ID:wtq/xrTf 複数pushできるの?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?
789デフォルトの名無しさん
2020/10/29(木) 01:01:50.46ID:GFOWX4AY790デフォルトの名無しさん
2020/10/29(木) 10:47:03.25ID:jsAu6jIB >>787 js
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ
class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ
class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}
791デフォルトの名無しさん
2020/10/29(木) 12:03:58.95ID:GFOWX4AY792デフォルトの名無しさん
2020/10/29(木) 12:11:08.30ID:moZIRBYC >>791
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?
793デフォルトの名無しさん
2020/10/29(木) 12:16:22.08ID:95aSRVZj オレもこの「言語機能のみを使い」がわからなかった
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見
794デフォルトの名無しさん
2020/10/29(木) 12:18:16.67ID:GFOWX4AY795デフォルトの名無しさん
2020/10/29(木) 12:21:59.18ID:GFOWX4AY796デフォルトの名無しさん
2020/10/29(木) 12:33:09.26ID:AOpu1Zek stdlib.h使わずに作るの?
797デフォルトの名無しさん
2020/10/29(木) 12:36:05.93ID:jsAu6jIB798デフォルトの名無しさん
2020/10/29(木) 12:50:57.59ID:GFOWX4AY799デフォルトの名無しさん
2020/10/29(木) 13:24:14.72ID:GFOWX4AY800デフォルトの名無しさん
2020/10/29(木) 13:27:39.52ID:GFOWX4AY >>796
C/C++などの言語はmallocなどを使っても良いことにする
C/C++などの言語はmallocなどを使っても良いことにする
801デフォルトの名無しさん
2020/10/29(木) 15:09:10.20ID:dNWGwdex Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど
802デフォルトの名無しさん
2020/10/29(木) 16:24:06.73ID:95aSRVZj State モナドを“準標準”と認めてもらえるなら簡単
Haskell
import Control.Monad.State
pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a
push :: a -> State [a] ()
push x = do
modify ((x :))
return ()
test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])
main = print $ evalState test []
---
出力
[3,2,1]
Haskell
import Control.Monad.State
pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a
push :: a -> State [a] ()
push x = do
modify ((x :))
return ()
test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])
main = print $ evalState test []
---
出力
[3,2,1]
>>787
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?
804デフォルトの名無しさん
2020/10/29(木) 19:02:59.18ID:c1P6mcgH 持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに
805デフォルトの名無しさん
2020/10/29(木) 19:32:46.09ID:EQ9lcE/o >>793
全く同じこと思ってたわw
全く同じこと思ってたわw
806デフォルトの名無しさん
2020/10/29(木) 19:34:40.84ID:EQ9lcE/o >>797
どうでもいいけどお前のIDもjsだsな
どうでもいいけどお前のIDもjsだsな
807デフォルトの名無しさん
2020/10/29(木) 19:40:10.12ID:Pf0NRL7D808デフォルトの名無しさん
2020/10/29(木) 20:59:03.61ID:zgfLAX1f >>787
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。
Haskell
― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst
― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)
push xs a = xs +++ (Cons a Null)
pop xs = (myinit xs, mylast xs)
Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)
myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)
mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。
Haskell
― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst
― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)
push xs a = xs +++ (Cons a Null)
pop xs = (myinit xs, mylast xs)
Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)
myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)
mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs
809デフォルトの名無しさん
2020/10/29(木) 21:10:47.05ID:wtq/xrTf >>787 JavaScript
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}
const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}
const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined
810デフォルトの名無しさん
2020/10/29(木) 21:13:39.21ID:wtq/xrTf うわ
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった
811デフォルトの名無しさん
2020/10/29(木) 23:09:01.60ID:MaNQDMIt813デフォルトの名無しさん
2020/10/29(木) 23:24:39.19ID:3o7XtB23 >>787 ocaml
https://ideone.com/8ceFxk
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs
https://ideone.com/8ceFxk
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs
814デフォルトの名無しさん
2020/10/29(木) 23:26:08.36ID:GFOWX4AY815デフォルトの名無しさん
2020/10/30(金) 00:06:20.24ID:aDtUVDPI >>802を改良?
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell
import Control.Monad
import Control.Monad.ST
import Data.STRef
data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)
push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr
main = print $ runST $ do
sA <- newSTRef Empty
sB <- newSTRef Empty
push sA 'o' >> push sA 'o' >>push sA 'f'
push sB 'r' >> push sB 'a' >> push sB 'b'
a1<-pop sA
a2<-pop sA
a3<-pop sA
b1<-pop sB
b2<-pop sB
b3<-pop sB
return [a1,a2,a2,b1,b2,b3]
----
出力
"foobar"
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell
import Control.Monad
import Control.Monad.ST
import Data.STRef
data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)
push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr
main = print $ runST $ do
sA <- newSTRef Empty
sB <- newSTRef Empty
push sA 'o' >> push sA 'o' >>push sA 'f'
push sB 'r' >> push sB 'a' >> push sB 'b'
a1<-pop sA
a2<-pop sA
a3<-pop sA
b1<-pop sB
b2<-pop sB
b3<-pop sB
return [a1,a2,a2,b1,b2,b3]
----
出力
"foobar"
816253
2020/10/30(金) 00:07:47.66ID:hMjmzAXb >>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);
}
sub Pop($a) {
my @a = @$a;
my $b = $a[-1];
@$a = @a[0..$#a-1];
$b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;
実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3
公式マニュアルに書かれている通り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);
}
sub Pop($a) {
my @a = @$a;
my $b = $a[-1];
@$a = @a[0..$#a-1];
$b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;
実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3
818253
2020/10/30(金) 00:22:38.86ID:hMjmzAXb819253
2020/10/30(金) 00:32:51.98ID:hMjmzAXb820253
2020/10/30(金) 00:34:30.90ID:hMjmzAXb821デフォルトの名無しさん
2020/10/30(金) 00:50:28.84ID:9RgBA+ge822デフォルトの名無しさん
2020/10/30(金) 02:22:50.19ID:9RgBA+ge823デフォルトの名無しさん
2020/10/30(金) 07:07:30.18ID:cChJ6BWU >>812
あ?
あ?
824デフォルトの名無しさん
2020/10/30(金) 23:30:40.86ID:hYhF3+Ov Brainfuck読めないわ
覚えようかな
覚えようかな
825デフォルトの名無しさん
2020/10/31(土) 13:49:55.42ID:QnYm1bfS お題
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです
treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです
treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none
826デフォルトの名無しさん
2020/10/31(土) 13:51:26.24ID:QnYm1bfS >>825 js(self)
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}
827デフォルトの名無しさん
2020/10/31(土) 14:54:50.69ID:HHhQTZ6R 関数名のミススペリングは修正していいですか
828デフォルトの名無しさん
2020/10/31(土) 15:02:04.99ID:QnYm1bfS ごっつtypoしてたすまんFIXME
829デフォルトの名無しさん
2020/10/31(土) 15:07:31.21ID:DmLmDhBA830デフォルトの名無しさん
2020/10/31(土) 15:33:31.91ID:I05R+wBh 相変わらずキモいなあ、いつもの勝手に認定キッズ
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組
831デフォルトの名無しさん
2020/10/31(土) 15:36:09.16ID:DmLmDhBA832デフォルトの名無しさん
2020/10/31(土) 15:44:11.18ID:pGrSKCPz >>825 JavaScript
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}
833デフォルトの名無しさん
2020/10/31(土) 15:54:22.22ID:i0S/O8KX834デフォルトの名無しさん
2020/10/31(土) 16:42:52.45ID:B0ELcd4k835デフォルトの名無しさん
2020/10/31(土) 17:10:35.46ID:M62mfk9p836デフォルトの名無しさん
2020/10/31(土) 17:42:14.32ID:/zmNVLOW837デフォルトの名無しさん
2020/10/31(土) 21:33:28.24ID:g64iH70d838デフォルトの名無しさん
2020/10/31(土) 21:58:58.47ID:t2sIU1o6 >>825 Ruby
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
839デフォルトの名無しさん
2020/10/31(土) 22:19:45.63ID:B0ELcd4k >>834
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で
Haskell
import Text.ParserCombinators.Parsec
makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String
first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)
trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"
main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で
Haskell
import Text.ParserCombinators.Parsec
makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String
first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)
trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"
main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]
840デフォルトの名無しさん
2020/10/31(土) 22:49:38.34ID:pe+8/Oyn >>825
C
#include<stdio.h>
char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";
if(*s == *tk)tk++;
if(*s == *tt)tt++;
return trickOrTreat(s+1, tk, tt);
}
int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);
char tk[] = "trick";
char tt[] = "treat";
int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}
return 0;
}
C
#include<stdio.h>
char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";
if(*s == *tk)tk++;
if(*s == *tt)tt++;
return trickOrTreat(s+1, tk, tt);
}
int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);
char tk[] = "trick";
char tt[] = "treat";
int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}
return 0;
}
841253
2020/10/31(土) 22:58:55.98ID:i+h07tFB >>825 Perl5
for (<DATA>) {
chomp;
%h = map{$_ => [split'']} qw{trick treat};
$k = 'none';
for $c (split'') {
for (keys %h) {
$r = $h{$_};
shift(@$r) if $c eq $$r[0];
unless (@$r) { $k = $_; goto L }
}
}
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none
for (<DATA>) {
chomp;
%h = map{$_ => [split'']} qw{trick treat};
$k = 'none';
for $c (split'') {
for (keys %h) {
$r = $h{$_};
shift(@$r) if $c eq $$r[0];
unless (@$r) { $k = $_; goto L }
}
}
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none
842デフォルトの名無しさん
2020/10/31(土) 23:10:35.06ID:8FYB/kmH >>841
なんでお前ずっとコテハンつけてんの?
なんでお前ずっとコテハンつけてんの?
843253
2020/10/31(土) 23:20:38.29ID:i+h07tFB >>842 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる
気にしないで
気にしないで
844デフォルトの名無しさん
2020/10/31(土) 23:26:17.77ID:OVAIfmUR845デフォルトの名無しさん
2020/10/31(土) 23:27:34.12ID:wd4K8eMC >>843
専ブラ使えばいいのに
専ブラ使えばいいのに
846253
2020/10/31(土) 23:32:26.70ID:i+h07tFB848デフォルトの名無しさん
2020/10/31(土) 23:54:01.35ID:OVAIfmUR849デフォルトの名無しさん
2020/11/01(日) 00:59:27.52ID:KABEK1ar >>825
Ruby
text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT
# 配列化
Trick = "trick".chars
Treat = "treat".chars
次へ続く
Ruby
text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT
# 配列化
Trick = "trick".chars
Treat = "treat".chars
次へ続く
850849
2020/11/01(日) 01:00:32.73ID:KABEK1ar >>849
の続き
def find_index( str, original )
idx_2 = 0
str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end
results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )
if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end
p results
#=> ["trick", "trick", "treat", "treat", "none"]
の続き
def find_index( str, original )
idx_2 = 0
str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end
results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )
if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end
p results
#=> ["trick", "trick", "treat", "treat", "none"]
851デフォルトの名無しさん
2020/11/01(日) 01:29:12.30ID:17LNcGyj852デフォルトの名無しさん
2020/11/01(日) 01:49:31.61ID:17LNcGyj853838
2020/11/01(日) 12:58:01.92ID:g/v4ZA9S >>825 Ruby
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end
[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}
854蟻人間 ◆T6xkBnTXz7B0
2020/11/01(日) 14:40:36.23ID:wOVD56Lv お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。
855デフォルトの名無しさん
2020/11/01(日) 16:05:05.76ID:+nQAPqAx 次行ってみよう
856蟻人間 ◆T6xkBnTXz7B0
2020/11/01(日) 16:41:27.74ID:wOVD56Lv857蟻人間 ◆T6xkBnTXz7B0
2020/11/01(日) 16:44:49.88ID:wOVD56Lv858デフォルトの名無しさん
2020/11/01(日) 16:51:14.83ID:VQGUeFT5 お前らは競技プログラミングとかやってる?
859253
2020/11/01(日) 16:54:48.84ID:I8lyxV1q >>858
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 青森のラーメン店、ライス・メンマ無料サービスを始める→ありえない残し方をした人が100人になったら即終了→すでに2人残してあと98人 [808139444]
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- >>3と>>5のワードを使ってai生成する
- 読売新聞、安倍晋三の新語録を公開。(高市に対して)「仕事は一人でやるもんじゃないんだよ」 [603416639]
