18/10/12 02:23:49.18 I/tzu8NI.net
>>96 ruby
n = 10
Prime.reduce(0){|s, i|break(s) if i > n; s + i}
101:デフォルトの名無しさん
18/10/12 02:35:54.36 xbwLlD7o.net
え?じゃ、こんな感じ?
perl -e 'for($n=1;(2**$n)!=(2**$n+1);$n++){} printf "%d, %.0f\n", $n, 2 ** $n;'
動かすとこう出るが。
53, 9007199254740992
102:デフォルトの名無しさん
18/10/12 06:06:04.48 j3qUjmca.net
>>96 Pharo/Squeak Smalltalk
(Integer primesUpTo: 10) sum
103:デフォルトの名無しさん
18/10/12 07:40:50.69 GdhRssFx.net
>>96
ruby -rPrime 'p Prime.first(10).sum'
#=> 17
104:デフォルトの名無しさん
18/10/12 09:39:43.72 1UpgDbu2.net
first(10)って普通は最初の10個を列挙するもんだがrubyは違うのか…
名前重要ってわりにセンスないな
105:デフォルトの名無しさん
18/10/12 10:33:46.63 oIm8hJ6E.net
じゃあちなみにこの関数名は何ならいいんだ?
お前の考えを言ってみろよ
センスを判定してやるよ
106:デフォルトの名無しさん
18/10/12 10:49:03.90 6UbBSJp3.net
first(10)が10までってセンスは普通におかしいだろ
つーかrubyも最初の10個返すんだが…?
107:デフォルトの名無しさん
18/10/12 13:22:40.26 +EEi3z6C.net
誰も動作を疑わずに書かれたものを脳死で信じるいい例だな、 >>100 のは17にはならん
108:デフォルトの名無しさん
18/10/12 13:50:43.62 oIm8hJ6E.net
ruby/ruby: The Ruby Programming Language
URLリンク(github.com)
そりゃそうだろ
スクリプト言語のソースコードは公開されてて誰でも読めるが
大抵のユーザーは書かれたものを脳死で信じるしかないだろ
それともお前は使うスクリプト言語のソースコードは全部精査してるのか?
コンパイラのソースコードまで熟読してるのか?
ンなモン、脳死で信じるしかねーだろ
109:デフォルトの名無しさん
18/10/12 13:54:46.58 VST6PShP.net
最近JavaとかC++とか少ないな
Javaは例の騒動があるから仕方ないとしてCとかC++はないんか
110:デフォルトの名無しさん
18/10/12 16:36:53.91 OhxorjMK.net
>>106
>>80はC++だね。
111:デフォルトの名無しさん
18/10/12 18:59:19.35 eR+rcBR9.net
>>96 ruby
require 'prime'
p Prime.take_while {|i| i < 10}.inject(:+)
112:デフォルトの名無しさん
18/10/12 20:05:50.75 oyAlSwuR.net
>>106
例の騒動って何
113:デフォルトの名無しさん
18/10/12 20:13:31.37 jorGy8Se.net
>>80
gcc8.1だと
char
(!(n > d && is_usual_num(n))) 0
(!(n > d && is_usual_num(n))) 0
(!(n > d && is_usual_num(n))) 0
(!(n > d && is_usual_num(n))) 0
(!(n > d && is_usual_num(n))) 0
(!(n > d && is_usual_num(n))) 0
(!(n > d && is_usual_num(n))) 1
(!(n > d && is_usual_num(n))) 0
break
calculated = -128
numeric_limits = 127
128
127
となるね
114:デフォルトの名無しさん
18/10/12 21:22:44.25 +EEi3z6C.net
ORACLEがお金取りますよってやつじゃない?
115:デフォルトの名無しさん
18/10/12 21:27:58.87 +EEi3z6C.net
なぜか言語自体のコード読む読まないの話になってるけど、これくらいのコードなら動かせばすぐにfirstが何してるか分かるじゃん、って思っただけだわ
116:デフォルトの名無しさん
18/10/13 10:05:11.14 m4emGyLz.net
お題
方程式 1/n = 1/x + 1/y (ただし、n,x,yは正整数でx≦y)について考える
例えばn=4のとき、1/4 = 1/5 + 1/20 = 1/6 + 1/12 = 1/8 + 1/8 より解の個数は3である
上限Mが与えられたとき、上の方程式の解の個数がMを超える最小のnの値を求めよ
2 -> 4
5 -> 12
10 -> 24
100 -> 1260
1000 -> 180180
10000 -> 116396280
250000000000 -> ?
117:デフォルトの名無しさん
18/10/13 11:29:08.44 4qDoRB+X.net
つまんない
118:デフォルトの名無しさん
18/10/13 11:32:11.63 QkDteBzw.net
>>113
n = 2の時
1/4 + 1/4 = 1/2
1/3 + 1/6 = 1/2
だけだから結果は2だよ
n=4の時より大きくなることはあり得ないし
119:デフォルトの名無しさん
18/10/13 11:52:27.26 QkDteBzw.net
ごめん。>>115は勘違い無視して
120:デフォルトの名無しさん
18/10/13 17:46:23.51 QtssFn
121:Iu.net
122:デフォルトの名無しさん
18/10/15 17:32:39.82 lmCCx0VP.net
回答一人で出題者からの返事がないとあってるかどうかわからないから困る
123:デフォルトの名無しさん
18/10/17 11:31:35.00 UkGf74ne.net
お題
[0,1]の一様乱数をN個発生させ、小さい順に並べてa(1), ..., a(N)とする
同様にもうN個作って小さい順にb(1), ..., b(N)とする
同じ順位同士で(a(1), b(1)), ..., (a(N), b(N)) とペアを作った時、a>bとなるペアの個数は0~N個になるが、その分布は?
またa, bを一様分布以外の分布から取ってくるとどうなる?
124:デフォルトの名無しさん
18/10/17 12:32:44.20 DKH+Jm9W.net
>>119
それはプログラミングで解くお題なのか?
125:デフォルトの名無しさん
18/10/17 13:07:54.93 OYXuI76a.net
>>120
シミュレーションしてみるのも面白いかなと
126:デフォルトの名無しさん
18/10/17 13:50:50.88 8efdFbKL.net
趣味で
127:デフォルトの名無しさん
18/10/17 14:07:56.22 4awkQadJ.net
これはひどい
128:デフォルトの名無しさん
18/10/17 15:35:45.15 5mPHIqhK.net
プログラミングで解くということに挑戦することから逃げるプログラマー
129:デフォルトの名無しさん
18/10/17 15:55:41.32 mC+TJhph.net
数学に逃げちゃ駄目だ。
130:デフォルトの名無しさん
18/10/17 17:12:22.62 DXXGfTNm.net
乱数全部同じパターンを引いてもその結果のみから分布を論じてかまわないというならそれでもいいがな
131:デフォルトの名無しさん
18/10/17 17:34:51.31 slnS35LM.net
ちょっとやってみた
J で
NB. monadic sort operator
sort=: /:~
NB. monadic operator returns count of a_n > b_n
NB. where a and b is sorted y-length array of rand(1000)
do1=: verb define
a =. sort ?y$1000
b =. sort ?y$1000
+/ (a>b)
)
NB. dyad operator returns count of number x in array y
count=: dyad define
+/ (x = y)
)
続く
132:デフォルトの名無しさん
18/10/17 17:35:05.08 IG2KKzqQ.net
>>119 Squeak/Pharo Smalltalkでシミュレーションのみ
擬似乱数発生器は Squeak の場合 Mersenne Twister(Pharo なら Park-Miller)
| N M random bag |
N := 10.
M := 1e6.
random := Random new.
bag := Bag new.
M timesRepeat: [
| pairs count |
pairs := (random next: N) with: (random next: N) collect: [:a :b | {a. b}].
count := pairs count: [:pair | [:a :b | a > b] valueWithArguments: pair].
bag add: count
].
bag sortedElements
"Squeak =>{
0->981.
1->9873.
2->44008.
3->117136.
4->205258.
5->246203.
6->204286.
7->117345.
8->44247.
9->9702.
10->961} "
133:デフォルトの名無しさん
18/10/17 17:38:20.84 cKcilnbV.net
>>119 Squeak/Pharo Smalltalkでシミュレーションのみ
擬似乱数発生器は Squeak の場合 Mersenne Twister(Pharo なら Park-Miller)
| N M random bag |
N := 10.
M := 1e6.
random := Random new.
bag := Bag new.
M timesRepeat: [
| pairs count |
pairs := (random next: N) with: (random next: N) collect: [:a :b | {a. b}].
count := pairs count: [:pair | [:a :b | a > b] valueWithArguments: pair].
bag add: count
].
bag sortedElements
"Squeak =>{
0->981.
1->9873.
2->44008.
3->117136.
4->205258.
5->246203.
6->204286.
7->117345.
8->44247.
9->9702.
10->961} "
134:デフォルトの名無しさん
18/10/17 17:40:58.97 wdgUzBYj.net
あ、誤連投&Jのにきスマン
135:デフォルトの名無しさん
18/10/17 17:41:12.83 slnS35LM.net
続き
NB. 長さ100の配列で100000回試行
r =: (do1 "0) 100000$100
NB. r を表示
r
=> 43 77 58 31 23 36 59 26 85 15 73 72 4 34 0 26 22 26 85 70 95 2 64 46 22 84 22 86 78 39 51 34 92 94 68 98 47 38 68 92 48 43 19 97 80 18 13 65 76 79 17 88 19 39 72 74 16 54 32 11 99 3 80 32 94 25 87 91 ...
NB. 0...100 の各数値の出現数
(i. 101) (count "0 1) r
=> 109 107 118 94 104 93 98 100 76 87 97 102 93 98 101 94 94 90 112 107 92 103 109 97 112 89 113 118 97 108 96 81 86 103 87 102 107 101 95 90 96 102 96 87 100 88 108 115 97 119 129 104 94 100 104 101 114...
NB. グラフ化
plot (i. 101) (count "0 1) r
URLリンク(i.imgur.com)
一様分布っぽい
136:デフォルトの名無しさん
18/10/17 17:43:54.06 slnS35LM.net
だいぶ結果が違っててわろすw
>>128ソート忘れてないか?
137:デフォルトの名無しさん
18/10/17 17:47:40.41 slnS35LM.net
理屈で考えると乱数がどんな分布でも a、b の分布が同じならコレの結果は常に同じ分布か
138:デフォルトの名無しさん
18/10/17 19:01:16.05 wdgUzBYj.net
なんか書き込めん…
>>132
たしかに^^;
pairs := (random next: N) sort with: (random next: N) sort collect: [:a :b | {a. b}].
で同じ分布になった
139:デフォルトの名無しさん
18/10/17 22:28:10.42 9jVKFKz5.net
ハローワールドの次にやる問題ってなんだろう
140:デフォルトの名無しさん
18/10/17 22:28:34.01 Ny9Q/0jK.net
ハローワークへ行きなさい
141:デフォルトの名無しさん
18/10/17 22:47:23.45 ysrRFDeq.net
>>135
echoかfizz buzzでもやれば
142:
18/10/17 23:45:01.56 DyWl92+N.net
>>137
>echo
?
143:デフォルトの名無しさん
18/10/18 09:27:49.01 xtVP5nmJ.net
>>138
echoコマンドの実装ってことじゃない?
\0xxx や \n も解釈するようなの作ると初心者には結構勉強になるかも。
144:デフォルトの名無しさん
18/10/18 19:47:17.70 3zhbamE0.net
136本人が出てきて答えなさい
145:デフォルトの名無しさん
18/10/18 22:31:25.80 qi6SRLg2.net
ハローワールドの次ぐらいだとすごろくとかじゃない
146:デフォルトの名無しさん
18/10/19 16:49:17.22 F1UCQFsO.net
お題
標準入力から入力したデータをそのまま標準出力人出力する
147:デフォルトの名無しさん
18/10/19 17:05:33.84 veK9KPY5.net
URLリンク(3dnchu.com)
このようなソフトはvisual studioで作るんですか?
なんの言語がいいか教えてください
148:デフォルトの名無しさん
18/10/19 17:15:05.14 gPrGaWTX.net
>>142
cat
149:デフォルトの名無しさん
18/10/19 18:18:43.95 rCjk/mnI.net
>>144 Brainfuck
,[.,]
150:デフォルトの名無しさん
18/10/19 18:19:25.68 rCjk/mnI.net
安価ミス >>144 -> >>142
151:デフォルトの名無しさん
18/10/19 20:16:34.44 qai0UNii.net
お題
マルチバイト文字だけ文字化けさせて出力
152:デフォルトの名無しさん
18/10/19 20:39:51.48 5dseSh/K.net
>>147 Python
URLリンク(ideone.com)
153:デフォルトの名無しさん
18/10/20 03:08:59.15 gD7ZVb6v.net
iso-8859-2を入力したら文字化けしたりUTF-7を入力したら文字化けしなかったりするのは美しくないから文字コードを指定させないといかん
154:デフォルトの名無しさん
18/10/20 05:27:36.15 qwv4GmvH.net
>>147
Kotlin
URLリンク(paiza.io)
入力はデフォルトのエンコーディングで Java のライブラリ内部で Unicode に自動変換させ、出力は UTF-8 になると想定して作られている。
つまり元の Unicode で \x0080 以上は UTF-8 だと全てマルチバイトになるので化けるようにしてある。
化け方は2通りでサロゲートペアの文字は % になりその他は * になる。
155:デフォルトの名無しさん
18/10/20 17:10:58.56 hxCjYBWY.net
>>142 Io
File standardInput contents print
156:デフォルトの名無しさん
18/10/20 17:46:57.83 cv2X893a.net
お題: 超簡単なステートマシン
以下の3つのデータがランダムに入力される。
1: hi
2: wake up
3: sleep
1が入力された場合、状態がwake up
157:であれば「hello」、状態がsleepであれば「zzz...」と出力せよ。 2が入力されたら状態をwake upに、3が入力されたら状態をsleepに移行せよ。
158:デフォルトの名無しさん
18/10/20 18:05:02.67 Nttc2RvP.net
>>152
つまり、hi以外で2、3に該当しない奴も無視で良いの?(hiは無視で良いんだよね)
データは勝手に標準入力にするけど。
(リダイレクトでファイルからに出来るし)
159:デフォルトの名無しさん
18/10/20 18:08:05.20 Nttc2RvP.net
あれ、違うぞ?
hiが入力された時、「かつ」wake upだったら”hello”出力か。
んでsleepなら”zzz...”ね。
それ以外無視と。
了解。
160:デフォルトの名無しさん
18/10/20 18:12:34.08 Nttc2RvP.net
てか、1ー3の数字だけで良いわ。
状態の意味はわかったけど、状態の文字は要らんね。
161:デフォルトの名無しさん
18/10/20 18:16:14.29 xvv7H8Vz.net
それ以外をどう考慮すべきかは書かれてないから、
ここは「3つのデータがランダムに入力される」を信じたフリをして手抜きをするのが吉
そんなことよりステートマシンなら初期状態は与えろよw
162:デフォルトの名無しさん
18/10/20 18:28:45.80 AUqXYm6F.net
>>152
python3
state = "sleep"
while True:
x = input("> ")
if x == "hi":
print("zzz..." if state == "sleep" else "hello")
elif x == "wake up":
state = "wake up"
elif x == "sleep":
state = "sleep"
else:
print("invalid input.")
163:デフォルトの名無しさん
18/10/20 18:42:18.95 Nttc2RvP.net
#include <stdio.h>
#include <conio.h>
int main(void)
{
char c,state = 0;
while(1)
{
c = getchar();
switch(c)
{
case '1':
if(state == '2')
{
printf("hello");
}
else if(state == '3')
{
printf("zzz...");
}
break;
164:デフォルトの名無しさん
18/10/20 18:43:23.41 Nttc2RvP.net
case '2':
state = '2';
break;
case '3':
state = '3';
break;
default:
break;
165:デフォルトの名無しさん
18/10/20 18:43:31.11 Nttc2RvP.net
}
}
return 0;
}
バッファ 無い方がいいのかと思ってバッファ無し版。(押したら即時入力)
conio.hは環境依存だけど、どうせWinだろ。
stdio.hのgetcだったら、バッファがあるからEnter押さないとだけど最初の1文字が入る。
面倒臭かったからステータスは数字に直さず文字そのまま使った。
166:デフォルトの名無しさん
18/10/20 20:20:44.01 WvTfEY4N.net
お題
2つの区間の共通部分を出力せよ
[1,3] [2,4] => [2,3]
(1,2) [1,2] => (1,2)
[0,100) (5,+inf) => (5,100)
(-inf,2] [1,+inf) => [1,2]
[1,2) [2,3) => {}
167:デフォルトの名無しさん
18/10/20 21:46:37.40 O4sbTglp.net
>>152
ruby -nle"$_!=?1?($t=-$_.to_i):(puts %w[zzz... hello _][$t])"
168:デフォルトの名無しさん
18/10/21 04:42:48.87 sz/a4USN.net
>>152
Kotlin
URLリンク(paiza.io)
初期状態は sleep にした。
wake up と sleep 以外の入力に対しては ERROR を出力して状態は変化させないようにした。
入力が何だったか分かるようにするために行頭に >> を付けて入力文字列を出すようにした。
169:デフォルトの名無しさん
18/10/21 04:53:27.38 sz/a4USN.net
>>152
Perl の1行プログラム
perl -ne 'BEGIN{$s=0;%x=("sleep"=>0,"wake up"=>1);%r=(0=>"zzz...",1=>"hello")}print ">> $_";chomp;\
if(defined($x{$_})){$s=$x{$_}}elsif($_ eq "hi"){print"$r{$s}\n"}else{print "ERROR\n"}'
仕様は>>163と同じ。
1行が長くなったので1行目の行末に \ を入れて2行に分けて書いてある。
170:デフォルトの名無しさん
18/10/21 09:26:11.61 3Rh2KUxU.net
>>152 java
URLリンク(ideone.com)
171:KVdM
172:デフォルトの名無しさん
18/10/21 09:40:05.59 UVDgsDD7.net
>>152 GNU Smalltalk
入力は、数値ではなくメッセージで
状態推移は、クラスチェンジで(つまりインスタンス変数なし&条件分岐なし)
…な感じで、他言語では思いつきにくい実装で遊んでみました
Object subclass: Machine [
wakeUp [ ^self ]
sleep [ ^self ]
hi [ self subclassResponsibility ]
state [ ^self class displayNl ]
Other := nil.
]
Machine class extend [ new [ ^WakeUp basicNew ] ]
Machine subclass: WakeUp [ hi [ 'hello' displayNl ] ]
Machine subclass: Sleep [ hi [ 'zzz...' displayNl ] ]
Machine extend [ Other := Sleep basicNew ]
WakeUp extend [ sleep [ ^self become: Other ] ]
Sleep extend [ wakeUp [ ^self become: Other ] ]
| machine |
machine := Machine new.
machine state. "=> WakeUp "
machine hi. "=> hello "
machine sleep; state. "=> Sleep "
machine hi. "=> zzz... "
machine wakeUp; state. "=> WakeUp "
machine wakeUp; state. "=> WakeUp "
machine sleep; state. "=> Sleep "
machine sleep; state. "=> Sleep "
URLリンク(ideone.com)
173:デフォルトの名無しさん
18/10/21 11:09:36.22 S2kctYlU.net
>>152
PowerShell、初期状態は 'Sleep'
function StateMachine {
param([parameter(ValueFromPipeline=$true)][string]$Event)
begin { $InSleep = $true }
process {
switch($Event){
'hi'{ Write-Host "$(if($InSleep){'zzz...'}else{'hellow'})"}
'wake up'{$InSleep=$false}
'sleep'{$InSleep=$true}
}
}
}
'hi','sleep','hi','wake up','hi' | StateMachine
174:デフォルトの名無しさん
18/10/21 18:51:44.61 7SU77e8C.net
>>161
Python3
URLリンク(ideone.com)
infは対応してないので1億とか適当な大きい値で代用
175:デフォルトの名無しさん
18/10/21 22:29:32.21 4ZLg1Jin.net
>>142 Lua
io.write(io.read("*a"))
176:デフォルトの名無しさん
18/10/22 01:45:31.26 mc31Kn/b.net
>>2
これおかしくね?
177:デフォルトの名無しさん
18/10/23 19:00:32.44 eWhef4/P.net
>>117-118
返答遅れてすみません
数値はあってるようです
私の稚拙なコードでよければ参考までに
Haskell
URLリンク(www.ideone.com)
178:デフォルトの名無しさん
18/10/23 21:37:05.53 HCMpmlk6.net
お題
Excel列番号の数字表記とアルファベット表記を相互変換せよ
A => 1
AA => 27
ABC => ?
26 => Z
266379 => ?
179:デフォルトの名無しさん
18/10/23 22:19:55.60 kr01ah20.net
>>172
Part6の754ですでに通った道だった
スレリンク(tech板:754番)
そしてその時の俺の回答はこれだ
URLリンク(ideone.com)
180:デフォルトの名無しさん
18/10/23 22:19:56.82 UJUp/CV/.net
>>172 Ruby
f=->n{n.to_s(26).tr('0-9a-p',r='@-Y').sub(/(.)@/){$1.tr('A-Z',r)+?Z}.delete ?@}
g=->s{s.tr('A-Z','0-9a-p').to_i(26)+(26**s.length-1)/25}
puts '%s => %s'%[$_.chop!,~/\d/?f[$_.to_i]:g[$_]]while gets
# =>
A => 1
AA => 27
ABC => 731
26 => Z
266379 => ODAI
181:デフォルトの名無しさん
18/10/23 22:31:11.04 fVBjYNqz.net
iか何かが無かったような?
182:デフォルトの名無しさん
18/10/23 23:51:06.93 H259Ae8g.net
var trans = alpha => parseInt((parseInt(alpha, 36) - parseInt('9'.repeat(alpha.length), 36)).toString(36), 26)
trans('A')
//=> 1
trans('AA')
//=> 27
trans('ABC')
//=> 731
順変換だけやってみたけどすごい不安…
Aがゼロ的な物なのか1的な物なのかこんがらがる…
183:デフォルトの名無しさん
18/10/24 00:17:51.17 n2SwZ/Io.net
>>176
Aは0扱いでよい。
与えられた文字列を str にとして x = str[A-Zの26進数] に対して
求める数 f(x) f N\{0} -> N\{0} は
f(x) = x + (26**g(x) - 1)/25
(g(x) := x == 0 ? 1 : [log_26(x)] + 1).
f は全単射なので逆写像f^(-1)が存在するので
f と f^(-1) が答え.
184:デフォルトの名無しさん
18/10/24 00:19:21.73 kOQJNkO6.net
マジカルインクリメント!マジカルインクリメントじゃないか!!
185:デフォルトの名無しさん
18/10/25 11:51:35.92 3ObU9lli.net
>>172 Pharo/Squeak Smalltalk
| fromExcelColm toExcelColm |
fromExcelColm := [:str | str asByteArray reversed - 64 polynomialEval: 26].
toExcelColm := [:n |
| nn digits |
nn := n.
digits := OrderedCollection new.
[(nn := nn - 1) >= 0] whileTrue: [digits addFirst: nn \\ 26. nn := nn // 26].
(digits asByteArray + 65) asString
].
fromExcelColm value: 'A'. "=> 1 "
fromExcelColm value: 'AA'. "=> 27 "
fromExcelColm value: 'ABC'. "=> 731 "
toExcelColm value: 26. "=> 'Z' "
toExcelColm value: 266379. "=> 'ODAI' "
fromExcelColm value: 'EXCEL'. "=> 2708874 "
toExcelColm value: 2788185942068. "=> 'MICROSOFT' "
186:デフォルトの名無しさん
18/10/25 12:50:39.12 hw/Q19JU.net
>>176
それ Z の時に失敗しない?
他の言語でやってみて失敗したので足したり引いたりする数を色々ひねったらうまく行ったけどね。
187:デフォルトの名無しさん
18/10/25 16:24:37.58 aKbYC4uC.net
>>172 python3
URLリンク(ideone.com)
ここにソースを書いたらブロックされたからideoneで
188:デフォルトの名無しさん
18/10/25 16:39:59.02 wLNEFoo1.net
>>177
>Aは0扱いでよい。
>与えられた文字列を str にとして x = str[A-Zの26進数] に対して
それだと "A" も "AAAAAA" も x = 0 になるから g がダメだな
189:デフォルトの名無しさん
18/10/25 16:46:00.18 9VVQwm/j.net
やっぱり36進数[0-9a-z]使った横着は出来ないのか…
190:デフォルトの名無しさん
18/10/25 17:18:04.60 BFrEhhQu.net
perlのbasecalcだとマジカルなことができる
191:デフォルトの名無しさん
18/10/25 17:29:09.19 /ssDOiD4.net
>>182
文字列にするときは適当な10*n[26進数]を足してやればよいからやはり基本は26進数でよい
192:デフォルトの名無しさん
18/10/25 17:46:06.11 wLNEFoo1.net
デコードは A-Z を 1 から 26 とする 0 を持たない変則 26 進数として数値化すりゃあいいんだよ
以下J
26 #. _64 + a. i. 'ABC'
==> 731
26 #. _64 + a. i. 'ODAI'
==> 266379
エンコードはちょっと1行では説明しにくい
193:デフォルトの名無しさん
18/10/25 17:52:55.69 Toapoewp.net
27進だろ…
194:デフォルトの名無しさん
18/10/25 17:53:10.85 hw/Q19JU.net
>>183
もう一捻り必要なんだよ。
考えてくと何れわかる。
195:デフォルトの名無しさん
18/10/25 18:17:57.30 wLNEFoo1.net
>>187
下からn桁目の重み付けが 26^n で(1番下を0桁とする)、
各桁の数字が1~26なんだよ
これで0以外の数は表記できる
AAA は 1*26*26 + 1 *26 + 1
ABC は 1*26*26 + 2 *26 + 3
YAZ は 25*26*26 + 1*26 + 26
196:デフォルトの名無しさん
18/10/25 19:37:38.82 gO/HWAcm.net
>>172
この問題を思い出した
URLリンク(riverplus.net)
197:デフォルトの名無しさん
18/10/25 20:05:21.59 na0fZQbz.net
全くの素人質問で申し訳ありませんが、お知恵拝借したくお願いします。
URLリンク(www.cjh.com.cn)
の画面左まんなか辺りの
三峡水? 25日 19?00分 174.64 -(入) 15200(出)
を自動で毎日夜21時に取得して
スレリンク(river板)
に自動で書き込む方法はありますでしょうか?
長年誰かが手写しでしたが、死屍累々でございます、、、、なのです、、
198:デフォルトの名無しさん
18/10/25 20:16:07.42 na0fZQbz.net
>>191
URLリンク(www.cjh.com.cn)
は
URLリンク(nweb.cjh.com.cn)
からでもOKです。
199:デフォルトの名無しさん
18/10/25 20:33:47.72 TSZxWHJ/.net
sssqold.htmlのソース見たが読むほうは簡単そうだな
書き込む方はしらん
200:デフォルトの名無しさん
18/10/25 20:33:50.34 BSekExc/.net
スレタイ
201:デフォルトの名無しさん
18/10/25 23:54:56.07 Hzy8+5Se.net
あらしのおもちゃになるソースを公開するのはさすがにちょっとなあ
202:デフォルトの名無しさん
18/10/25 23:59:06.56 9OC64j5F.net
>>191
2chのcgiは仕様変更ちょいちょいあって追いかけるの面倒だから書き込みは自動保守ツールとか任せるとして、
powershellのスクリプトをタスクスケジューラで動かして出力をテキストファイルにリダイレクトして自動保守ツールに食わせりゃいいんじゃね
スクリプトはこんな感じかね
$html= Invoke-WebRequest -UseBasicParsing URLリンク(nweb.cjh.com.cn)
$pattern = "`"oq`":`"(\d*)`",`"q`":`"(\d*)`"[^}]+`"三峡水库`",`"tm`":(\d+),[^}]+`"z`":`"([0-9\.]+)`""
if ($html.RawContent -match $pattern) {
$time = (Get-Date "1970/1/1 0:0:0 GMT").AddMilliseconds($Matches[3])
"三峡水库 {2:dd}日 {3}m {1}(入) {0}(出)"-f $Matches[1],$Matches[2],$time,$Matches[4]
}
203:デフォルトの名無しさん
18/10/26 01:56:21.09 zqmCYDLg.net
無駄に一行だな
204:デフォルトの名無しさん
18/10/26 03:39:31.47 c84xrxY5.net
>>172
(fold + 0 (map-with-index (lambda (i c) (* (- (char->integer c) #x40) (expt 26 i))) (reverse (string->list "ABC"))))
205:デフォルトの名無しさん
18/10/26 19:50:36.71 /kG4owY9.net
お題
ぷよぷよの連鎖数を求めよ。0-9がぷよ、.が空きマスを表す。
0013
0123
122.
013.
0123
=> 4
9.9.9.9.9.9
.9.9.9.9.9.
=> 1
0123
3012
2301
1230
=> 0
206:デフォルトの名無しさん
18/10/26 20:45:47.09 yqPKU+uE.net
>>196
おお、素晴らしいアドレスありがとうございます。後は何とか頑張ってみます!!
207:デフォルトの名無しさん
18/10/26 20:51:49.05 8JGFizba.net
>>199
2番目のパターンは実際のゲームではあり得ないものだとは思うが、とにかく何もない所があれば落ちてそれから何連鎖するかを求めればいいのかな?
208:デフォルトの名無しさん
18/10/29 19:22:44.11 PHNS982/.net
>>172
Kotlin
URLリンク(paiza.io)
入力が A-Z なら数値に変換(小文字も可)、数字だけの文字列はいわゆるA1の形式に変換。それ以外は入力異常でエラー。
209:デフォルトの名無しさん
18/10/30 17:20:53.74 xBpFVgTt.net
>>199 python3
URLリンク(ideone.com)
最適もへったくれもないゴリ押しですわ…
210:デフォルトの名無しさん
18/10/30 21:09:38.22 RM3bKAov.net
お題: ページャーを実装してください。標準入力から以下のデータが与えられます。不正な入力にはいい感じに対応してください。
1行目: 現在のページ番号
2行目: 総ページ数
3行目: 表示するリンク数
例1
入力:
1
10
5
出力:
[1] 2 3 4 5
例2
入力:
5
10
5
出力:
3 4 [5] 6 7
例3
入力:
10
10
5
出力:
6 7 8 9 [10]
211:デフォルトの名無しさん
18/10/30 22:21:08.83 Mk80lxDb.net
>>204 perl
$now = shift or die $! ;
$all = shift or die $! ;
$show = shift or die $! ;
$x = 1 + int $show/2;
$y = $all - $x + 1;
if($now <= $x){
$start = 1;
}elsif($y <= $now){
$start = $all - $show + 1;
}else{
$start = $now - int $show/2;
}
$end = $start + $show - 1;
print join " ", map{ $_ == $now ? "[$_]" : "$_" }($start..$end);
212:デフォルトの名無しさん
18/10/30 22:51:09.23 N8SwgYLQ.net
>>204
Python3
current = int(input())
total = int(input())
n_links = int(input())
assert 1 <= current <= total and n_links <= total
if current <= n_links//2:
seq = range(1, n_links+1)
elif current >= total-n_links//2:
seq = range(total-n_links+1, total+1)
else:
left = current - n_links//2
right = current + n_links//2 + (0 if n_links%2 == 0 else 1)
seq = range(left, right)
seq = ["[{}]".format(s) if s == current else str(s) for s in seq]
print(" ".join(seq))
213:デフォルトの名無しさん
18/10/30 22:54:52.47 N8SwgYLQ.net
うまく貼れなかった
URLリンク(ideone.com)
214:デフォルトの名無しさん
18/11/02 11:25:03.96 b7bQuZgR.net
>>204 Squeak Smalltalk
| fn |
fn := [:pg :tot :wd |
| start pages |
start := pg - (wd // 2) min: tot - wd + 1 max: 1.
pages := start to: start + wd - 1.
(pages collect: [:x | (x = pg ifTrue: ['[{1}]'] ifFalse: ['{1}']) format: {x}]) joinSeparatedBy: ' '
].
#((1 10 5) (5 10 5) (10 10 5)) collect: [:tri | fn valueWithArguments: tri]
"=> #('[1] 2 3 4 5' '3 4 [5] 6 7' '6 7 8 9 [10]') "
215:デフォルトの名無しさん
18/11/02 23:41:59.56 8MYT0pgk.net
三峡水? 02日 23?00分 174.53 -(入)14700(出)
216:デフォルトの名無しさん
18/11/03 04:09:45.11 vg8hCxXN.net
>>204
Kotlin
URLリンク(paiza.io)
折角日本語使えるんだからたまには使わないとな。
217:デフォルトの名無しさん
18/11/03 08:08:00.00 BMDI0yEn.net
>>172 rust
URLリンク(ideone.com)
>>204 rust
URLリンク(ideone.com)
218:デフォルトの名無しさん
18/11/03 23:34:36.36 BMDI0yEn.net
>>172 c
URLリンク(ideone.com)
>>204 c
URLリンク(ideone.com)
219:デフォルトの名無しさん
18/11/04 13:46:33.88 pidkuN2F.net
>>204
Haskell
main = mapM_ put [(1,10,5),(5,10,5),(10,10,5)]
put (x,y,z) = return (pager x y z) >>= print
pager a b c | a <= (c `div` 2) = mklist a $ take c [1..b]
pager a b c | a > (b - c `div` 2) = mklist a $ drop (b - c) [1..b]
pager a b c = mklist a $ take c $ drop (a - c `div` 2 -1) [1..b]
mklist a xs = [small a xs , jst a xs , big a xs]
small a = filter (< a)
big a = filter (> a)
jst a = filter (== a)
結果
[[],[1],[2,3,4,5]]
[[3,4],[5],[6,7]]
[[6,7,8,9],[10],[]]
[executed "pager.hs"]
220:デフォルトの名無しさん
18/11/04 13:47:27.44 pidkuN2F.net
結果が切れた。。。
改めて結果。
[[],[1],[2,3,4,5]]
[[3,4],[5],[6,7]]
[[6,7,8,9],[10],[]]
[executed "pager.hs"]
221:デフォルトの名無しさん
18/11/05 17:57:48.99 GRwYYoWB.net
お題
3つの自然数A,B,Cが与えられる。
初項A、第二項Bであるフィボナッチ数列に対してCがその数列に含まれるかを判定せよ。
含まれる場合は第何項
222:であるかを返し、含まれない場合は偽を返すものとする。
223:デフォルトの名無しさん
18/11/05 20:17:41.49 0wNeh4D8.net
>>215 python
def fibo(a, b):
_yield a
_yield b
_while True:
__yield a + b
__a, b = b, a+b
def func(fb, n):
_count = 1;
_while True:
__num = fb.next()
__print "{} th term = {}".format(count, num)
__if num >= n:
___if num == n:
____return count
___else:
____return False
__count = count + 1
_return False
a, b, c = 1, 1, 100
print func(fibo(a, b), c)
224:デフォルトの名無しさん
18/11/05 20:25:58.31 0wNeh4D8.net
同じもの
URLリンク(ideone.com)
225:デフォルトの名無しさん
18/11/05 21:15:45.04 b01o/g5T.net
>>215 rust
URLリンク(ideone.com)
226:デフォルトの名無しさん
18/11/05 23:33:04.48 6d8cBeMO.net
>>215 Ruby
require 'matrix'
def hoge(a, b, c)
rm, fm, im = Matrix[[1, 1], [1, 0]], Matrix[[1, 0], [0, 1]], Matrix[[b], [a]]
(0..Float::INFINITY).each do |n|
m = fm * im
return m[1, 0] > c ? false : n if m[1, 0] >= c
fm *= rm
end
end
p hoge(0,1,88) #=> false
p hoge(0,1,89) #=> 11
p hoge(0,1,90) #=> false
227:デフォルトの名無しさん
18/11/06 03:12:12.75 BD76rR44.net
>>215
Kotlin
URLリンク(paiza.io)
228:デフォルトの名無しさん
18/11/06 07:54:03.24 GFB90oOd.net
C
初項の次第二項って書いてるのに、みんな何故0始まりなの。。。
#include <stdio.h>
int fibin(int,int,int);
int main(void)
{
for(int i = 0;i < 6;i++) printf("%d:%d\n",i,fibin(1,1,i));
return 0;
}
int fibin(int fst,int snd,int num)
{
int i = 2,fib = fst;
if(fst == num) return 1;
if(snd == num) return 2;
while(fib != num)
{
fib = fst;
fib += snd;
if(fib <= num) i++;
else return -1;
fst = snd;
snd = fib;
}
return i;
}
229:デフォルトの名無しさん
18/11/06 09:23:46.31 jl2IXbjS.net
(A,B,C)が(0,0,0),(0,1,0),(0,1,1),(1,0,0),(1,0,1)の時はCが無限回、(1,1,1),(0,X,X),(X,0,X),(X,X,X)(2≦X)の時はCが2回出現することがあるが考慮した方が良いか?
230:デフォルトの名無しさん
18/11/06 10:48:03.28 VF9SVEaj.net
A,Bによっては無限ループになり得ないか?
231:219
18/11/06 11:49:20.62 13CfGTjW.net
そういやa,bが0,0だと足しても0だからcも0じゃないと無限ループするかな。
232:219
18/11/06 11:52:26.86 13CfGTjW.net
した。見事にした。
足してゼロなら特別扱いして終わらせる処理がないとダメだったということだな。
今さら直す気は起きんが。
233:デフォルトの名無しさん
18/11/06 11:52:29.61 GFB90oOd.net
>>222
今まで投稿されてるコード見る限りは最初に見つけた時点で停止。
>>223
自然数って指示だから止まるはずだけど、関数の引数側でunsigned指定して(Javaとかだとuint)おいた方が良いかもね。
234:デフォルトの名無しさん
18/11/06 12:34:42.11 jAy4xbYh.net
>>215 Squeak/Pharo Smalltalk
| fibGen fn |
fibGen := [:fst :snd |
Generator on: [:g |
| a b |
a := fst. b := snd.
g yield: a. [b := a+b. g yield: (a := b-a)] repeat
]
].
fn := [:A :B :C |
| count fib last |
count := 1. fib := fibGen value: A value: B.
[(last := fib next) < C] whileTrue: [count := count + 1].
last = C ifTrue: [count] ifFalse: [false]
].
fn value: 1 value: 1 value: 89. "=> 11 "
fn value: 1 value: 1 value: 90. "=> false "
235:デフォルトの名無しさん
18/11/06 14:46:16.34 GFB90oOd.net
Haskell
main = mapM_
(\x -> putStr (show x ++ ":") >> print (fibin 0 1 x))
[0..6]
fibin 0 0 c | c /= 0 = Nothing
fibin a b c = lookup c $
zip (take (10 + c) fib) [1..]
where fib = a:b:(zipWith (+) fib (tail fib))
236:デフォルトの名無しさん
18/11/06 18:51:28.38 2YnZy0Ze.net
>>215 ruby
URLリンク(ideone.com)
AとB足してゼロ問題に対しては
fib = ->a, b {Enumerator.new {|y| loop {y << a; a, b = b, a + b; break if b == 0}}}
237:デフォルトの名無しさん
18/11/06 22:17:30.30 Nv8RqtnA.net
お題
xy平面上の点がn+1個与えられる(各点のx座標は互いに異なる)
与えられた点をすべて通る関数 y=a[i]x^n+...+a[1]x+a[0] の係数a[i]を求めよ
[入力]
点の個数(n+1)
x[0] y[0]
...
x[n] y[n]
[出力]
a[n] ... a[0]
2
0 1
1 3
=> 2 1 (y=2x+1)
1
100 100
=> 100
5
0 1
-1 5
2 2
4 -1
1 0
=> -2/15 4/15 49/30 -83/30 1
238:デフォルトの名無しさん
18/11/06 23:24:52.38 bpzsP6yI.net
【ラグランジュ補間】
Σ[i=1,n] )y[i]Π[k≠i](x-x[k])/ (x[i]-x[k])
この係数を計算するだけ。
こういう純数学的な処理は、お題としてはどうかな?
応用上、常に展開した係数を求めるのに意味がある
とも限らんし、精度評価が重要だったりとか
239:デフォルトの名無しさん
18/11/06 23:43:20.04 iVEsbroy.net
>>230
線形代数は偉大
import numpy as np
N = int(input())
x, y = [], []
for i in range(N):
_x, _y = map(float, input().split())
x.append(_x)
y.append(_y)
x = np.array(x)
y = np.array(y)
px = np.array([x**k for k in range(N)])
a = np.dot(y, np.linalg.inv(px))
print(a[::-1])
240:デフォルトの名無しさん
18/11/06 23:51:57.59 bpzsP6yI.net
[1 x[0] x[0]^2...x[0]^n] [a[n]] =[y[0]]
[1 x[1] x[1]^2... x[1]^n] [a[n-1]]=[y[1]
[1 x[2] x[2]^2...x[2]^n] [a[n-2]]=[y[2]]
...
[1 x[n] x[n]^2 .... x[n]^n] [a[0] ]=[y[n]]
を解かせたというわけか...
241:デフォルトの名無しさん
18/11/07 00:03:06.07 q3WQuIHF.net
また数学板から荒らしにきたのか
242:デフォルトの名無しさん
18/11/07 00:56:30.16 yYgCxC/p.net
お題: 四則演算の文字列を受け取って計算結果を返す
1+2+3+4
=> 10
4+5*6-2*3
=> 28
5+12*(2+9/3)/((2+3)*5-7*3)
=> 20
243:デフォルトの名無しさん
18/11/07 00:58:06.61 B66LtM9k.net
>>230 Ruby
s = ->a, b{a.zip(b).map{|i, j| i - j}}
t = ->a, k{a.map{|i| i * k}}
n = gets.to_i - 1
m = $<.read.split($/).map{|e| f[n, *e.split.map(&:to_r)]}
(1..n+1).each do |r|
(nonzero = m[r- 1..-1].find_index{|e| e[r].nonzero?} + r - 1) && next
m[r - 1], m[nonzero] = m[nonzero], m[r - 1]
m[r - 1] = t[m[r - 1], 1/m[r - 1][r]]
[*[*(0..n)] - [r - 1]].each{|i| m[i] = s[m[i], t[m[r - 1], m[i][r]/m[r - 1][r]]]}
end
puts m.transpose[0].map{|i| i.denominator == 1 ? i.to_i : i} * ' '
2
0 1
1 3
#=> 2 1 (y=2x+1)
3
1 1 1 1
5 4 2 1
8 9 3 1
#=> -1/2 11/2 -4
244:デフォルトの名無しさん
18/11/07 01:00:36.71 B66LtM9k.net
>>236 訂正 尚複数解存在する時は最も次数の小さいものを出力
2
0 1
1 3
#=> 2 1
3
1 1
5 2
8 3
#=> -1/2 11/2 -4
245:デフォルトの名無しさん
18/11/07 01:50:15.65 B66LtM9k.net
>>235
ruby -nle'puts [$_,eval($_)]*" => "'
1+2+3+4 => 10
4+5*6-2*3 => 28
5+12*(2+9/3)/((2+3)*5-7*3) => 20
246:デフォルトの名無しさん
18/11/07 02:11:40.28 B66LtM9k.net
>>236 訂正
s = ->a, b{a.zip(b).map{|i, j| i - j}}
t = ->a, k{a.map{|i| i * k}}
n = gets.to_i
m = $<.read.split($/).map{|e| f[n + 1, *e.split.map(&:to_r)]}
n.times do |r|
(nonzero = m[r..-1].find_index{|e| e[r].nonzero?} + r) || next
m[r], m[nonzero] = t[m[nonzero], 1/m[nonzero][r + 1]], m[r]
[*[*(0..n + 1)] - [r]].each{|i| m[i] = s[m[i], t[m[r], m[i][r + 1]/m[r][r + 1]]]}
end
puts m.transpose[0].map{|i| i.denominator == 1 ? i.to_i : i} * ' '
247:デフォルトの名無しさん
18/11/07 12:58:28.67 jk7t6Ngg.net
>>230 Squeak Smalltalk
| fn |
fn := [:points |
| xs ys fi gi |
xs := points collect: #x.
ys := points collect: #y.
fi := [:x :i | ((1 to: xs size) copyWithout: i) inject: 1 into: [:prod :k | prod * (x - (xs at: k))]].
gi := [:i |
(0 to: xs size - 1) collect: [:n | n = 0 ifTrue: [1] ifFalse: [
(Array streamContents: [:ss |
(xs copyWithoutIndex: i) combinations: n atATimeDo: [:comb |
ss nextPut: (comb negated reduce: #*)]
]
) sum
]]
].
(ys * ((1 to: xs size) collect: gi) / (xs collectWithIndex: fi)) sum
].
fn value: {0@1. 1@3}. "=> #(2 1) "
fn value: {100@100}. "=> #(100) "
fn value: {0@1. -1@5. 2@2. 4@ -1. 1@0}. "=> {(-2/15) . (4/15) . (49/30) . (-83/30) . 1} "
248:デフォルトの名無しさん
18/11/07 13:01:59.20 jk7t6Ngg.net
>>230 Pharo Smalltalk w/PolyMath >>232っぽく
"Metacello new
repository: 'github://PolyMathOrg/PolyMath:master/src';
baseline: 'PolyMath';
load"
| fn |
fn := [:points |
| xs ys xp |
xs := points collect: #x.
ys := points collect: #y.
xp := (PMMatrix rows: ((xs size - 1 to: 0 by: -1) collect: [:m | xs raisedTo: m])) transpose.
(xp inverse * ys asPMVector) asArray
].
fn value: {0@1. 1@3}. "=> #(2 1) "
fn value: {100@100}. "=> #(100) "
fn value: {0@1. -1@5. 2@2. 4@ -1. 1@0}. "=> {(-2/15) . (4/15) . (49/30) . (-83/30) . 1} "
249:デフォルトの名無しさん
18/11/07 18:36:22.03 LRSzKna1.net
お題
Windows bitmap画像(.bmp)は通常、下から上に向かって画像が記録されているが、
高さに負の値を指定することで、上から下へ向かって画像を記録することができる。
これを利用してbmp画像の上下を反転せよ。
250:デフォルトの名無しさん
18/11/07 18:45:22.44 oTVd6hn3.net
どこが問題なのw
仕様に沿った解決法言っちゃってるじゃんw
251:219
18/11/07 19:20:37.53 bimd4khF.net
>>243
プログラムを作るのがお題だろう。
ここはプログラミングのお題スレなんだからこれでいいんだよ。
むしろ人がある程度プログラムの仕様を考えなければならないような数学問題みたいなやつがダメなお題。
252:デフォルトの名無しさん
18/11/07 20:13:22.48 Uevtgk2mh
社会貢献のための生成とはどうあるべきかについて考えればいいじゃないか。
それを無くしては単なる社会主義的生産物として生きていく日々だよ。
253:デフォルトの名無しさん
18/11/07 20:23:12.93 Uevtgk2mh
それとも社会貢献はプログラミングのお題じゃないってか?
頭良すぎるだろ。
254:デフォルトの名無しさん
18/11/07 20:24:13.29 Uevtgk2mh
俺にも下品さの師匠を教えてくれよ。
お前らみたいに豊かになりてーわ笑。
255:デフォルトの名無しさん
18/11/07 19:56:07.71 5DjOPE5m.net
>>242 Ruby
in_fname = 'hoge.bmp'
out_fname = 'hoge_ud.bmp'
File.binwrite(out_fname, File.binread(in_fname).tap{|b| b[22, 4] = [-b[22, 4].unpack(?l).pop].pack(?l))
256:デフォルトの名無しさん
18/11/07 20:06:47.46 umLQTzF1.net
>>244
あなたがそういう問題しか好きじゃないか解けないだけでしょ
スレ民の総意みたいな言い方しないで
257:デフォルトの名無しさん
18/11/07 20:14:12.09 Lazgvcn1.net
>>244
紙とえんぴつで解ける数学問題みたいなやつがプログラミングのお題としてダメなのは同意なんだけど>>242は例えば
画像の上下を反転せよ。入力はbmpとする。
とかのほうが良かったんじゃないかな。
愚直に配列いじる奴を尻目に仕様を利用して華麗に解くやつが現れる。
これがいいんじゃないか。
258:219
18/11/07 21:05:56.46 bimd4khF.net
>>249
スレ民の総意がどうであろうともこのスレはプログラミングのお題スレなんだからプログラミングのお題になってないのはスレチであることには代わりがない。
適切なスレに書くかまたはなければ新たにそれ用のスレを作って書けば良い。
>>250
それでもいいかも知れないが問題が簡略化されているために自分で仕様を調べるというプログラミングとは少し違う作業が発生するな。
更に仕様の盲点に気付くかというクイズ的な要素もある。
259:デフォルトの名無しさん
18/11/07 21:15:41.59 wOCAlbJb.net
まあ式を実装するだけの数学問題と大差ないお題にしてしまうような要素は不要だったな
260:デフォルトの名無しさん
18/11/07 21:15:43.65 h4FWJh3K.net
>>249
>>248 じゃないけど、数学の問題は問題自体が分からないから手が出せない。
高卒でも分かるように噛み砕いて貰えれば書けるかもだが。
261:デフォルトの名無しさん
18/11/07 21:17:30.61 h4FWJh3K.net
そう考えると、プログラミングの能力って言語覚えるより問題を理解する能力だよな。。。
262:デフォルトの名無しさん
18/11/07 22:05:04.79 DuFCNJWg.net
噛み砕くとこうだな
ファイルの22バイトめから保存されている4バイト長の整数値の符号を反転せよ。
ただし数値は下位バイトから順に格納されており、負数は2の補数表現を用いるものとする。
263:デフォルトの名無しさん
18/11/07 22:06:17.13 DuFCNJWg.net
出力は反転した数値以外は元のファイルと同じ内容のファイルとする
も要るか
264:デフォルトの名無しさん
18/11/07 22:14:53.17 h4FWJh3K.net
>>255
ごめん
>>230-231 の方が分からないんだ。。。
265:デフォルトの名無しさん
18/11/07 22:28:14.93 /kHK9X1+.net
それこそ数学の質問スレでやってくれない?
266:デフォルトの名無しさん
18/11/08 03:03:27.47 yQlGi5bN.net
>>244
>ここはプログラミングのお題スレなんだからこれでいいんだよ。
>むしろ人がある程度プログラムの仕様を考えなければならないような数学問題みたいなやつがダメなお題。
スレタイ『プログラマーは何を勉強すべきか?』
プログラマーは何を勉強すべきかということだが、最新のトレンドに適応した勉強が必要だ。
俺は今までこれだけ沢山勉強してきたという人も、実は最新のトレンドに適応していない可能性もある。
5、結論
以上の結果より導き出される京大英語で8割を超すための対策は、「ネイティブ英語とは何か」
を定義づけして学ぶことに尽きるだろう。
たとえば、「この料理はまずい」という英作文なら受験生に多いのが
This dish tastes poor.
しかし、これは評価されない。なぜなら、英語として正しくてもマナー違反。英検英語なら否定文にして、
This dish isn't good. これでマナーは改善された。
しかし、ネイティブなら I don't like this dish. と言うだろう。本当に不味い場合は、
Yuck! と叫ぶ。そういう違いだ。
問題は、
「受験英語の参考書や問題集で取り上げられている構文や表現が現実に使われている英語と違う」
という事実。それを指導している教師や講師も、外国生活がなく50年前の表現を気づかずに指導して
いること。そのために、校内テストや模試で高得点や上位の順位をとっても落ちてしまうこと。
URLリンク(storys.jp)
267:デフォルトの名無しさん
18/11/08 03:57:11.05 AySxWi85.net
「この料理はまずい」の時点でマナー違反なんだからそのまま訳すのが正しい
料理がまずいときの一言を答えさせたいならそう出題すればいいことだ
そういう出題側の質とか意識してんのかなこいつ
268:デフォルトの名無しさん
18/11/08 04:48:49.11 QHwNiY6E.net
数学のように、頭の中で正しいかどうかを、証明するような問題は、面倒くさい。
このスレでは、頭を使わず、単純な総当たり問題が好まれる
その方が、プログラミング的な問題
269:デフォルトの名無しさん
18/11/08 05:18:56.02 HOEn5tLb.net
お題:
自然数Nと、N個の「半角の小文字アルファベットと数字からなる1文字以上の文字列」が標準入力から順次与えられます。
文字列をNatural Sort*して標準出力から順次出力してください。
追加問題:
お題1を正規表現を使わず実装してください。
*:
"a120"と"a13"が与えられた場合、"a13","a120"の順番にソートするようにする。
また、今回は"a01"と"a1"が与えられた場合、連続する数字が少ない方を先にする、すなわち"a1","a01"の順になるようにするものとし、
"0"と"a"のどちらが先に来るかについては自由とします。
270:デフォルトの名無しさん
18/11/08 05:51:13.63 yQlGi5bN.net
>>261
>数学のように、頭の中で正しいかどうかを、証明するような問題は、面倒くさい。
>このスレでは、頭を使わず、単純な総当たり問題が好まれる
ならば、「チンポがシコシコする」という日本語表現は、文法的に正しいのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンボ)が別々になっている場合とが考えられる。けれども「チンボ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
271:デフォルトの名無しさん
18/11/08 07:42:34.26 Tu3rCJEk.net
>>261
まあそうなんだけど、数学スレでガンガンプログラミング言語で答え出してる奴がいて正直羨ましい。
272:デフォルトの名無しさん
18/11/08 09:21:24.69 UCtqQ5sl.net
なぜそのスレで頑張らないのか。
二軍でヒーローになろうと思ってここで数学の問題出してるの?
273:デフォルトの名無しさん
18/11/08 09:28:43.02 Tu3rCJEk.net
?
私は出題者じゃ無いよ。
274:デフォルトの名無しさん
18/11/08 09:57:33.73 2oWgTmr1.net
>>265
>なぜそのスレで頑張らないのか。
>二軍でヒーローになろうと思ってここで数学の問題出してるの?
俺はただパソコンに向かって独り言ブツブツ言って、チンポがシコシコしてるだけだが?
275:デフォルトの名無しさん
18/11/08 09:57:41.43 llemawmF.net
>>262
How do I do a natural sort on an array?
URLリンク(www.perlmonks.org)
これを実装すんの?
276:デフォルトの名無しさん
18/11/08 10:23:04.41 Cbg63GbQ.net
>>263
君が何を言いたいのかよくわからない。
277:デフォルトの名無しさん
18/11/08 10:34:41.85 yQlGi5bN.net
>>269
『チンポ』についての生態学は、俺にもよくわからん。
278:デフォルトの名無しさん
18/11/08 11:03:16.65 WO5MlDuJ.net
>>262 Ruby
puts$<.readlines.sort_by{|a|[a.scan(/\d+|\D+/).map{|e|e.to_i(36)},a.size]}
279:デフォルトの名無しさん
18/11/08 14:52:40.11 9PdT3eEJ.net
>>271
>>262
>また、今回は"a01"と"a1"が与えられた場合、連続する数字が少ない方を先にする、すなわち"a1","a01"の順になるようにするものとし、
280:デフォルトの名無しさん
18/11/08 15:03:35.30 5p9g1xrz.net
>>272
問題無い
# stdin
a130
a12
a001
a01
a1
1
# stdout
1
a1
a01
a001
a12
a130
281:デフォルトの名無しさん
18/11/08 15:08:17.09 9PdT3eEJ.net
>>273
a01b2
a1b0002
282:デフォルトの名無しさん
18/11/08 15:11:12.86 5p9g1xrz.net
>>274
うわー恥ずかしい
指摘ありがとう
283:デフォルトの名無しさん
18/11/08 15:11:38.15 rrpg0ZUw.net
>>273
a001
a12
これ逆にならんとあかんのとちゃう?
284:デフォルトの名無しさん
18/11/08 15:14:27.12 tjdDhH3P.net
>>215 python3
むりやり数式で解いてみた
URLリンク(ideone.com)
285:デフォルトの名無しさん
18/11/08 15:33:18.20 quzojjRV.net
ソートの問題、
連続する数字はその連を数値として比較しつつ同じ数値のときは桁数少を前としているわけだよな
つまり
a01a
a1b
a01b
をソートすると
a01a
a1b
a01b
286:デフォルトの名無しさん
18/11/08 16:29:56.18 Tu3rCJEk.net
>>262
Haskell
main = concat $ map qsort grop
grop = map filterlen [1..(maximum $ map length input)]
filterlen n = filter (\x -> n == length x) input
qsort [] = []
qsort (x:xs) = small ++ [x] ++ big
where small = qsort [a |a <- xs, a <= x]
big = qsort [a | a <- xs, a > x]
input = ["a130","a12","a001","a01","a1","1"]
287:デフォルトの名無しさん
18/11/08 16:31:19.84 Tu3rCJEk.net
input = ["a130","a12","a001","a01","a1","1"]
288:デフォルトの名無しさん
18/11/08 18:41:10.95 e5hl87sZ.net
>>278
>連続する数字はその連を数値として比較しつつ同じ数値のときは桁数少を前としているわけだよな
同じ数値のときじゃなくて全体が等しいときか
289:デフォルトの名無しさん
18/11/08 18:52:29.20 B0s1LWLV.net
>>279
input = ["01m30s","1m45s","02m03s"]
結果
["1m45s","01m30s","02m03s"]
あんまりnatural じゃない感じ
290:デフォルトの名無しさん
18/11/08 19:15:05.42 85A5tG8V.net
お題
M行N列の領域をジグザグスキャンするときの順序を求めよ
3 3
=>
1 2 6
3 5 7
4 8 9
4 2
=>
1 2
3 5
4 6
7 8
3 5
=>
01 02 06 07 12
03 05 08 11 13
04 09 10 14 15
1 8
=>
1 2 3 4 5 6 7 8
291:デフォルトの名無しさん
18/11/08 22:07:15.82 k/fJXxDB.net
>>235 ruby
URLリンク(ideone.com)
292:デフォルトの名無しさん
18/11/08 22:11:37.46 Tu3rCJEk.net
>>282
そう?
ナチュラルソートっての知らんけど、その結果見ても仕様通りと思うんだが。
293:デフォルトの名無しさん
18/11/08 22:16:02.65 EeFetNer.net
>>271を訂正 Ruby
puts$<.readlines.sort_by{|a|a.scan(/(\D*)(\d+)/).map{|i,j|[i,j.to_i,j.size]}}
# stdin
a01b2
a1b0002
a130
a12
a001
a1
1
# stdout
1
a1
a1b0002
a01b2
a001
a12
a130
294:デフォルトの名無しさん
18/11/08 23:33:47.08 TLTEncZh.net
誰に何を文句言うわけでもないがナチュラルソートってのは一般に
"01.25" < "1.5"
"01m 25cm" < "1m 35cm" とか
"Chapter 001 section 5" < "Chapter 1 section 6"
となるような順序での整列
逆でもいいけど
問題の仕様はどうかしらんが単に用語の解説ね
295:デフォルトの名無しさん
18/11/08 23:49:40.65 I6IWEGdd.net
今回の問題の仕様とは微妙に違うから回答にはならないけど
echo -e "01m30s\n1m45s\n02m03s" | sort -V
01m30s
1m45s
02m03s
ナチュラルソートならこうなるべきだな
296:デフォルトの名無しさん
18/11/09 09:07:23.82 cVPfgm+I.net
>>287-288の仕様で Ruby
args = [
'01.25', '1.5', '01m 25cm', '1m 35cm',
'Chapter 001 section 5', 'Chapter 1 section 6',
'01m30s', '1m45s', '02m03s'
]
nsort = lambda do |args|
f = ->str{str.scan(/(?=.)(\D*)(\d+(\.\d+)?)/).flat_map{|a, b| b.empty? ? [a] : [a, b.to_r]}}
g = ->str{str.scan(/\d+/).map(&:size)}
args.sort do |str1, str2|
comparison = f[str1] <=> f[str2]
comparison.zero? ? g[str1] <=> g[str2] : comparison
end
end
p nsort[args]
#=>["01m30s",
"1m45s",
"01m 25cm",
"1m 35cm",
"01.25",
"1.5",
"02m03s",
"Chapter 001 section 5",
"Chapter 1 section 6"]
297:デフォルトの名無しさん
18/11/09 17:42:13.83 SNvr5Euv.net
>>269
『チンポ』については、自分でも良くわからない、何とも言えない不思議な生き物だ。
298:デフォルトの名無しさん
18/11/09 18:36:42.14 B4AEy6G3.net
お題
1以上N以下の奇数を並べた数の桁数を求めよ
3
=> 2 (13)
10
=> 5 (13579)
9999
=> 19445 (135...99979999)
123456789
=> ?
31415926535897
=> ?
299:デフォルトの名無しさん
18/11/09 18:45:16.11 DHGOZxva.net
>>291
桁数というか奇数が何個かって話やね。
わざわざ分かりにくい仕様とか、コミュ障かと。
300:デフォルトの名無しさん
18/11/09 18:47:33.93 DHGOZxva.net
ん、ああ。
10とか100とかになったら個数と桁数は違うか。
悪かった。
301:デフォルトの名無しさん
18/11/09 19:31:42.41 myvceSEv.net
お題
与えられた数を最小文字数で生成する。
302:デフォルトの名無しさん
18/11/09 19:36:37.28 b84kY48J.net
>>291 rust
URLリンク(ideone.com)
303:デフォルトの名無しさん
18/11/09 19:38:13.95 JsSTi+Gx.net
>>294
問題の意味がわからん。何か例を書いてくれ。
304:デフォルトの名無しさん
18/11/09 19:45:38.08 OW/zGENl.net
意味のわからない日本語を解析する
305:デフォルトの名無しさん
18/11/09 19:46:38.02 A6qAb8kp.net
134217728 が与えられたら 8^9 を返すとかそういう話かね?
306:デフォルトの名無しさん
18/11/09 19:46:54.75 EUp1VEAA.net
>>291
Haskell
main = mapM_ print $ zip3 lst fosl fos
oddstr [] = []
oddstr (x:xs) = show x:oddstr xs
fo = map (\x-> filter (odd) [1..x]) lst
foo f = map (f.concat.oddstr) fo
fos = foo id
fosl = foo length
lst = [3,10,999,123456789,31415926535897]
コードはすぐ出来たけど、計算が終わらないw
奇数が多すぎてバッファに残ってなさそうだから、ファイルにリダイレクトし直しかな。。。
307:デフォルトの名無しさん
18/11/09 20:06:34.46 JsSTi+Gx.net
>>291
スマホから直接一度も試さずに書くが、Kotlin だと理屈の上ではこれでできると思う。
nが最大値な。
println((1..n step 2).joinToString("").length)
かといってこんなのメモリ食うだけ。
308:デフォルトの名無しさん
18/11/09 20:38:18.97 Zs2FyImb.net
>>291 Ruby
args = [0, 1, 2, 3, 10, 9999, 123456789, 31415926535897]
floor_log10 = -> n {r = 1; (0..n).find{ r *= 10; r > n}}
kotae = ->n{
x = floor_log10[n + 1]
((9*x - 1)*10**x + 10)/18 + (n-10**x+1)/2 * (x
309: + 1) + (n < 8 ? n & 1 : 0) } args.each{|e| puts '%d => %d' % [e, kotae[e]]} # => 0 => 0 1 => 1 2 => 1 3 => 2 10 => 5 9999 => 19445 123456789 => 500000000 31415926535897 => 214355930195731
310:デフォルトの名無しさん
18/11/09 21:56:37.18 lMSYlD+9.net
>>301
なんで
311:デフォルトの名無しさん
18/11/09 21:58:02.15 lMSYlD+9.net
すまん。途中で誤爆した。
>>301
なんでこうなるの??
あと最後のn < 8 ? n & 1 : 0も数式で表わせる?
312:デフォルトの名無しさん
18/11/09 22:05:09.74 gJrymgLI.net
>>291
Python3
print(len("".join(map(str, range(1, int(input())+1, 2)))))
を実行したらフリーズしたので
odd = range(1, int(input())+1, 2)
keta = 0
for i in odd:
keta += len(str(i))
print(keta)
#==============
123456789
=> 500000000
31415926535897
=> 終わらん
313:デフォルトの名無しさん
18/11/09 22:09:18.25 EUp1VEAA.net
>>299
123456789の桁数は500000000ってのは分かった。
314:デフォルトの名無しさん
18/11/09 22:23:23.31 PBoRuHnu.net
>>303
0からnまでの奇数を並べてできる数の桁数をf(n)とすると(n >= 0)
p := [log10(n+1)] として n >= 10の時
f(n) = Σ[k は 0~[(n-1)/2]]( (2k+1)の桁数 )
= 1*(0~9までの奇数の数) + 2*(10~99までの奇数の数) + ...
+ p*(10^(p-1)~10^p-1までの奇数の数) + (p+1)*(10^p~nまでの奇数の数)
= 1*5 + Σ[k は 2~p]45k*10^(k-2) + (p+1)*[(n - 10^p + 1)/2]
= 45/100*Σ[k は 1~p]k*10^k + 1/2 + (p+1)*[(n - 10^p + 1)/2]
= ((9p - 1)10^p + 1)/18 + 1/2 + (p+1)*[(n - 10^p + 1)/2]
= ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] …… (*)
n = 0, 2, 4, 8, 9 の時はちょうど (*)
n = 1, 3, 5, 7 時は (*) + 1 なので
f(n) = ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] + (n < 8 ? n & 1 : 0)
末尾の項を無理やり数式にしたいなら
[8/(n + 1)]((1 - (-1)^n)/2)(2^((5 - n)/2)([n/7] + 1))
とかにすればいいんじゃない意味ないけど
315:デフォルトの名無しさん
18/11/09 23:35:53.00 QKOvQ/Be.net
>>291 Squeak/Pharo Smalltalk
| fn |
fn := [:N |
| nDig |
nDig := N log truncated.
(1 to: nDig)
inject: (1 to: N by: 2) size * (nDig + 1)
into: [:tot :m | tot - ((10 raisedTo: m) / 2)]
].
#(3 10 9999 123456789 31415926535897) collect: fn
"=> #(2 5 19445 500000000 214355930195731) "
316:デフォルトの名無しさん
18/11/09 23:56:11.30 EzT7HP1o.net
>>306
訂正
((9p - 1)10^p + 10)/18 -> [((9p - 1)10^p + 10)/18]
あと (n < 8 ? n & 1 : 0) は (1 - (-1)^n)/2*[3/([√n] + 1)] の方がより簡単か
317:デフォルトの名無しさん
18/11/10 01:35:04.59 PYYpj2JU.net
>>291
Kotlin
URLリンク(paiza.io)
318:デフォルトの名無しさん
18/11/10 04:32:40.14 dp2CGyZQ.net
>>309
すごい😆
319:デフォルトの名無しさん
18/11/10 04:35:26.34 PYYpj2JU.net
>>262
Kotlin
URLリンク(paiza.io)
色々考えたが結局クラス作ってそこに数字列と文字列で切り分けて入れておいて比較時にそこ見るようにした。
入力の仕様は拡張されていて、最初に数字だけがあった場合はその後に続く単語がその個数あるとみなして
入力を行うが、最初に数字がない場合は無制限に読む。出力は入力した単語とソート後の単語を出す。
320:デフォルトの名無しさん
18/11/10 05:36:17.18 zQnB+SVr.net
提案
回答は言語別に別スレで
2スレ位になるかな?
評価価値基準で別れていくんじゃないかと
ここではコメントのみになるのかな。
321:デフォルトの名無しさん
18/11/10 05:52:45.45 5gG2FCqG.net
スレ過疎りそうだし誰もわざわざ別スレに回答見に行かなそう
322:デフォルトの名無しさん
18/11/10 06:43:43.85 zQnB+SVr.net
乱立して過疎ってる特定言語専用スレの活性化に寄与することを願いたいしコード例が増えることはそれぞれメリットあるんじゃないかと。
ここと相互リンクは必ず貼る。他の言語と比較しない
他を貶さないを基本ルールに。
323:デフォルトの名無しさん
18/11/10 07:08:4
324:9.40 ID:mapNUhJU.net
325:デフォルトの名無しさん
18/11/10 08:21:22.38 2tLivqWS.net
>乱立して過疎ってる特定言語
具体的に何?
一番肝心のこと言ってないから説得力がまるで無い
326:デフォルトの名無しさん
18/11/10 09:22:59.55 dp2CGyZQ.net
お題:
A,B,Cの3人が1から5までの値が1つずつ書かれた5枚のカードを使ってインディアンポーカーを行う。
各々ランダムに1枚カードを引き、自分は値を見ず他の参加者に値が見えるように額にかざす。
この状態でA,B,Cの順に自分の値が今回引かれた3枚の中で最大(MAX)か,2番目に大きい(MID)か,最小(MIN)かを予想して答える。
AとBはパスしてもよいものとし、誰かが答えた時点で終了となる。
なお全員必ず正解するものとする。
各々の引いたカードの値を引数にとり、一回分のインディアンポーカーの結果を出力する関数indian_poker(a, b, c)を実装せよ。
期待動作例:
indian_poker(3, 2, 1) // 「A is MAX」
indian_poker(5, 2, 4) // 「B is MIN」
indian_poker(4, 2, 3) // 「C is MID」
327:デフォルトの名無しさん
18/11/10 09:43:13.06 9vqEahoA.net
そのスレの流れを無視してよそのスレで出されたお題の答えだけ書かれても、そのスレの住人には邪魔なだけだと思う。
328:デフォルトの名無しさん
18/11/10 09:56:28.53 X2YiMm/N.net
こういう指示語ばかり使うやつはだいたい頭悪い
329:デフォルトの名無しさん
18/11/10 10:03:50.52 0iGN/oEh.net
>>317
マ板で見かけた入社試験過去問か。
プログラマー脱落者として辞退します。
330:デフォルトの名無しさん
18/11/10 10:10:03.22 zQnB+SVr.net
乱立して過疎ってる (特定言語専用(スレッド))
形容詞句?の係りはこれな
(こういうものの表しかたにも流儀が色々あって混在するとややこしい)
331:デフォルトの名無しさん
18/11/10 10:19:13.79 2tLivqWS.net
係り受けなんてどーでもいいよ
「特定言語」って具体的に何なんだ、って聞いてるだけじゃん
返答が『形容詞句?の係りはこれな』って人の話をわざと聞かない人間だろ
かなりのサイコパスなんで『乱立して過疎ってるスレ』とやらに誘いこんでマウンティングしたいだけじゃねえの
なぜなら、特定言語の具体的な名前を5時間経っても未だに出さない、
口を開いたかと思えば「係り受けはこうだから」
もう頭がおかしいだろこいつ
332:デフォルトの名無しさん
18/11/10 10:34:20.29 zQnB+SVr.net
一つの言語を話題の軸に置いたスレッドは幾らでもあるだろ?この板には。
過疎ってるのも伸びてるのも全部特定言語専用スレな
333:デフォルトの名無しさん
18/11/10 10:36:44.35 zQnB+SVr.net
コマンドプロンプトとかSQLとかでワイルドカード使ったことないのかな?
334:デフォルトの名無しさん
18/11/10 11:08:46.45 1MT6N26R.net
そもそもここが過疎だし、他スレなんかにここのコード書いても荒らしにしかならんので当然ながら反対
やりたい奴だけ勝手にやってろ
335:デフォルトの名無しさん
18/11/10 11:14:10.79 16GnFLu/.net
>>317
一人が答えた時点で終了になるのに全員正解とは
336:デフォルトの名無しさん
18/11/10 11:20:45.22 zQnB+SVr.net
幾らなんでも既存スレ無許可で乗っ取るのはやめてほしい。
でも逆にそちらで希望された場合には別スレにしなくてもいいのでは?リンクさえあれば
337:デフォルトの名無しさん
18/11/10 11:31:50.87 T2pc5qWv.net
そもそも>>312の時点で日本語が怪しいですし
338:デフォルトの名無しさん
18/11/10 11:33:27.18 16GnFLu/.net
>>317
答えた者が必ず正解するならAが常にあてずっぽうで正解できることになるな
パスする
339:意味も無い 言わんとすることは推測できるが、問題文としては明らかにおかしい 各自、論理的に正解が絞りきれた場合のみ解答し、そうで無ければ必ずパスするものとする。又、その論理に誤りはないものとする。みたいな条件が必要
340:デフォルトの名無しさん
18/11/10 11:34:10.16 g5G2TnXq.net
>>317 Java
URLリンク(ideone.com)
これはひどいコードww
341:デフォルトの名無しさん
18/11/10 11:36:49.05 16GnFLu/.net
>>330
ごり押しで草
342:デフォルトの名無しさん
18/11/10 11:44:08.17 16GnFLu/.net
Aは常に正解する
Aは常に正しい
故にA is GOD
343:デフォルトの名無しさん
18/11/10 12:18:21.41 2tLivqWS.net
>>317は9月末あたりに話題になってた
URLリンク(qiita.com)
URLリンク(qiita-image-store.s3.amazonaws.com)
344:デフォルトの名無しさん
18/11/10 12:38:22.96 16GnFLu/.net
>>333
元ネタからして雑すぎて草
345:デフォルトの名無しさん
18/11/10 12:44:49.01 gks79eHH.net
前スレ951のやつか
346:デフォルトの名無しさん
18/11/10 12:44:51.58 xqriZsUd.net
>>317 Ruby
def indian_poker(a, b, c)
x = [Set[1, 2], Set[1, 5], Set[4, 5]]
winner, winners_num = case
when x.include?(Set[b, c]) then [?A, a]
when a == 3 || (b == 3 && Set[a, b, c] != Set[2, 3, 4]) || x.include?(Set[a, c]) ||
Set[b, c] == Set[2, 4] then [?B, b]
else [?C, c]
end
'%s is %s' % [winner, %w[MIN MID MAX].zip([a, b, c].sort).find{|e| e.last == winners_num}.first]
end
arr = [*(1..5)].permutation(3){|i| puts '%p -> %s' % [i, indian_poker(*i)]};
# =>
[1, 2, 3] -> C is MAX
[1, 2, 4] -> B is MID
[1, 2, 5] -> B is MID
...
以下>>330と同じ
347:デフォルトの名無しさん
18/11/10 13:25:37.16 hLxIIZfE.net
>>329
> 各自、論理的に正解が絞りきれた場合のみ解答し、そうで無ければ必ずパスするものとする。又、その論理に誤りはないものとする。みたいな条件が必要
流石にその程度は理解しようよ…
348:デフォルトの名無しさん
18/11/10 13:27:54.99 8cjk91S6.net
>>291 python3
URLリンク(ideone.com)
うーん… O(1)にできない
349:デフォルトの名無しさん
18/11/10 13:37:54.71 16GnFLu/.net
>>337
書いてないことは何でもあり
論理パズルにするならちゃんとルールは全て掲示しないと駄目
350:デフォルトの名無しさん
18/11/10 13:52:54.08 9b5VuL4P.net
お題
n^n^nの下2桁を求めよ(^はべき乗、nは1以上の整数)
1 => 1
2 => 16 (2^2^2 = 2^4 = 16)
3 => 87 (3^3^3 = 3^27 = 7625597484987)
4 => 96
11 => 11
13 => 53
100 => 0
777 => ??
351:デフォルトの名無しさん
18/11/10 14:00:49.74 hLxIIZfE.net
>>339
はいはい w
アスペかよ
352:デフォルトの名無しさん
18/11/10 15:46:45.95 16GnFLu/.net
>>340
777の出力は77になればいいのかな?
その入力でこうなるの面白いな
353:デフォルトの名無しさん
18/11/10 15:58:06.48 xqriZsUd.net
>>342
97じゃない?
354:デフォルトの名無しさん
18/11/10 16:06:41.30 16GnFLu/.net
>>343
すまんコード修正したら97になったわ
はやとちりだった
355:デフォルトの名無しさん
18/11/10 16:28:23.31 31tiZVqm.net
>>330-331
そういうのはそれよりマシなコードを出してから言わないと単なる口先番長にしか見えないぞw
356:デフォルトの名無しさん
18/11/10 17:09:13.33 xqriZsUd.net
>>340 Ruby
def powmod(n, e, m)
case e
when 0 then 1
when :even?.to_proc then powmod(n * n % m, e >> 1, m)
else n * powmod(n, e - 1, m) % m
end
end
def kotae(n, m)
index, cycle = (1..m).each_wit
357:h_object([1]) do |i, a| x = (a.last * n % m) ind = a.index(x) ind.nil? ? a.push(x) : (break([ind, i - ind])) end x = n.times.reduce(1){|r, i| r *= n; r < index ? r : break} y = x.nil? ? index + (powmod(n, n, cycle) - index) % cycle : x powmod(n, y, m) end [0, 1, 2, 3, 4, 5, 10, 11, 13, 100, 777].each{|i| puts '%d -> %06d' % [i, kotae(i, 10**6)]} # =>0 -> 000000 1 -> 000001 2 -> 000016 3 -> 484987 4 -> 084096 5 -> 203125 10 -> 000000 11 -> 906611 13 -> 549053 100 -> 000000 777 -> 977097
358:デフォルトの名無しさん
18/11/10 17:30:26.21 g5G2TnXq.net
>>345
自分で書いて自分でひどいコードと言うとるんやがww
359:デフォルトの名無しさん
18/11/10 17:52:39.10 AvCW4uHY.net
python
def ans(num):
_def calc(N):
__n = (N ** 2) % 100
__p = []
__while n not in p:
___p.append(n)
___n = (n * N) % 100
__return p
_loop = calc(num)
_step = num**num % len(loop)
_if len(loop) == 1:
__print(loop[0])
_else:
__print(loop[step-2])
for x in [0,1,2,3,4,5,10,11,13,777]:
_ans(x)
-> 0,1,16,87,96,25,0,11,53,97
360:デフォルトの名無しさん
18/11/10 17:55:30.82 hLxIIZfE.net
>>347
ああ、それはすまん
俺もパッと書けと言われたらこれしか思いつかんわ
361:デフォルトの名無しさん
18/11/10 19:50:00.93 nd1h6x9x.net
>>347
わかった上で愚直にごり押しコード書いただけだよな
引数順列の列挙もドストレートで素敵w
362:デフォルトの名無しさん
18/11/10 20:50:56.73 G7iMNc/F.net
>>317 Squeak/Pharo Smalltalk
| numOfCards indianPoker |
numOfCards := 5.
indianPoker := [:args |
| cards names infer |
cards := (1 to: numOfCards) asArray.
names := (Character alphabet asUppercase first: args size) asArray collect: #asSymbol.
infer := nil. (infer := [:dealts :limit |
| turn possibilities lastAns answers |
turn := 0. answers := OrderedCollection new.
possibilities := dealts collect: [:dealt | cards asSet removeAll: dealts; add: dealt; yourself].
lastAns := nil -> #?.
[lastAns value = #? and: [(turn := turn + 1) < limit]] whileTrue: [
| myCards others |
myCards := possibilities atWrap: turn.
turn > 1 ifTrue: [
(myCards copyWithout: (dealts atWrap: turn)) do: [:pCard |
(infer value: (dealts copy atWrap: turn put: pCard; yourself) value: turn) value ~= #?
ifTrue: [myCards remove: pCard]]].
others := dealts copyWithoutIndex: turn - 1 \\ 3 + 1.
lastAns := (names atWrap: turn) -> (true caseOf: {
[others min > myCards max] -> [#MIN].
[others max < myCards min] -> [#MAX].
[others max > myCards max and: [others min < myCards min]] -> [#MID]
} otherwise: [#?])
]. lastAns]) value: args value: Float infinity
].
indianPoker value: #(3 2 1). " #A->#MAX "
indianPoker value: #(5 2 4). " #B->#MIN "
indianPoker value: #(4 2 3). " #C->#MID "
363:デフォルトの名無しさん
18/11/11 03:24:01.44 HtKIrWnT.net
>>340 python3
URLリンク(ideone.com)
364:デフォルトの名無しさん
18/11/11 10:02:52.73 ZG9KPLpE.net
>>340
Rubyで。
URLリンク(ideone.com)
365:デフォルトの名無しさん
18/11/11 12:53:19.00 ILkwXRqJ.net
>>340 Squeak/Pharo Smalltalk
| fn |
fn := [:N |
(Array new: 3 withAll: N) reduce: [:mex :n |
mex \\ 100 = 0 ifTrue: [0] ifFalse: [n raisedTo: mex modulo: 100]
]
].
#(1 2 3 4 11 13
366:100 777) collect: fn "=> #(1 16 87 96 11 53 0 97) "
367:デフォルトの名無しさん
18/11/11 14:11:48.73 j7sl2u35.net
>>354
それだけでいけるのか
すげー
368:デフォルトの名無しさん
18/11/11 14:19:03.18 SClia95W.net
それでもJニキなら何とかしてくれる
369:デフォルトの名無しさん
18/11/11 14:25:13.88 j7sl2u35.net
よく読んだら素直に実装してるだけか
370:デフォルトの名無しさん
18/11/11 14:34:26.37 ILkwXRqJ.net
>>357
ですね…^^;
371:デフォルトの名無しさん
18/11/11 16:24:01.50 xWJTm2Oc.net
お題
n次のヒルベルト曲線を描画せよ
n=1
■□■
■□■
■■■
n=3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■
372:デフォルトの名無しさん
18/11/11 17:11:10.50 Gv5Fmm22.net
>>340 Perl5
use bignum (l=>GMP);
for $i (1,2,3,4,11,13,100,777) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}
実行例
$ time perl 12_338.pl
1 01
2 16
3 87
4 96
11 11
13 53
100 00
777 97
0.562 secs
373:デフォルトの名無しさん
18/11/11 17:52:24.96 tvDFPkAv.net
>>359 Ruby
def hilbert_curve(n)
return [[1, 0, 1], [1, 0, 1], [1, 1, 1]] if n == 1
hc = hilbert_curve(n - 1)
[
*hc.transpose.reverse.zip(hc.reverse.transpose).map{|a, b| [*a, 0, *b]},
[1, *Array.new(2**(n + 1) - 3, 0), 1],
*hc.zip(hc).map.with_index{|(a, b), i| [*a, 1/(i + 1), *b]}
]
end
[1, 3].each{|e| puts "n = #{e}", hilbert_curve(e).map{|a| a.join.gsub(/\d/, ?0 => ?□, ?1 => ?■)}.join($/)}
# => n = 1
■□■
■□■
■■■
n = 3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■