プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part20
https://mevius.5ch.net/test/read.cgi/tech/1624028577/
探検
プログラミングのお題スレ Part21
レス数が1000を超えています。これ以上書き込みはできません。
2022/11/13(日) 19:00:36.84ID:ZCYlhUwL
942デフォルトの名無しさん
2023/07/15(土) 03:29:30.91ID:deBIZu3e >>927 Ruby
def solution( mk )
mb = 1
a = [0]
print "0x%X\n→(" % mk
while mk > 0
a.dup.each{|b| a << b + mb } if mk.odd?
mb <<= 1
mk >>= 1
end
puts a.map{|x| '0x%X' % x }.join(', ') + ')'
end
solution( 0 ) # 0の場合 0x0でいいのかな?
solution( 0x13 )
solution( 0x45 )
solution( 0x92C )
def solution( mk )
mb = 1
a = [0]
print "0x%X\n→(" % mk
while mk > 0
a.dup.each{|b| a << b + mb } if mk.odd?
mb <<= 1
mk >>= 1
end
puts a.map{|x| '0x%X' % x }.join(', ') + ')'
end
solution( 0 ) # 0の場合 0x0でいいのかな?
solution( 0x13 )
solution( 0x45 )
solution( 0x92C )
943デフォルトの名無しさん
2023/07/15(土) 08:05:25.03ID:DpclFvGX >>925
ツッコミどころが多すぎる
正しくはこうでは?
10^(-30)
=1.010_0010_0100_0010_0101_1111_...×2^(-100)
さらに、...部分は1111...と続くので、単精度にするなら切り上げになって、
1.010_0010_0100_0010_0110_0000×2^(-100)
よって、単精度での内部表示は
0_00011011_010_0010_0100_0010_0110_0000
整数0xa24260をセットして2^123で割ればいける
2のべき乗での割り算すら信用できないなら、ldexpあたりを使うのはどうか。pythonならこちら
(pythonは単精度が無いので結果は少しずれる)
from math import ldexp
print(ldexp(0xa24260, -123))
もしくは、バイト列経由で直接変換もあり。pythonならこちら
from struct import pack, unpack
print(unpack('f', pack('I', 0b0_00011011_010_0010_0100_0010_0110_0000))[0])
ツッコミどころが多すぎる
正しくはこうでは?
10^(-30)
=1.010_0010_0100_0010_0101_1111_...×2^(-100)
さらに、...部分は1111...と続くので、単精度にするなら切り上げになって、
1.010_0010_0100_0010_0110_0000×2^(-100)
よって、単精度での内部表示は
0_00011011_010_0010_0100_0010_0110_0000
整数0xa24260をセットして2^123で割ればいける
2のべき乗での割り算すら信用できないなら、ldexpあたりを使うのはどうか。pythonならこちら
(pythonは単精度が無いので結果は少しずれる)
from math import ldexp
print(ldexp(0xa24260, -123))
もしくは、バイト列経由で直接変換もあり。pythonならこちら
from struct import pack, unpack
print(unpack('f', pack('I', 0b0_00011011_010_0010_0100_0010_0110_0000))[0])
944915
2023/07/15(土) 10:11:42.89ID:HHeu+C79 今からIEEE754に準拠してない処理系が制作される事は無いでしょうから
(ホビーや学習用途は別ね)、
今日の処理系で、2のべき乗での割り算で仮数部が変わるって事は
無いと思われます(アンダーフローやオーバーフローは除外)。
…IBM hexadecimal floating-pointって基数が16だったな。
(仮数部が変わらないのは16のべき乗での乗除算のみ)
あれを常用してる人ってまだ居るのか?w
>>943
FORTRANならEQUIVALENCE文で…
(ホビーや学習用途は別ね)、
今日の処理系で、2のべき乗での割り算で仮数部が変わるって事は
無いと思われます(アンダーフローやオーバーフローは除外)。
…IBM hexadecimal floating-pointって基数が16だったな。
(仮数部が変わらないのは16のべき乗での乗除算のみ)
あれを常用してる人ってまだ居るのか?w
>>943
FORTRANならEQUIVALENCE文で…
945デフォルトの名無しさん
2023/07/15(土) 16:01:33.91ID:STkOcJIm946デフォルトの名無しさん
2023/07/15(土) 16:07:59.58ID:STkOcJIm そもそも浮動小数点ライブラリなら
x^y = exp( y * log 2 )
で実装してるんじゃないかな
そもそものexpやlogが“最近値”を与えてくれることなど規格にはないやろ
それは数値計算の理論勉強してたらすぐわかる、メチャクチャ難しくてほとんど実装不能になってしまう
だから規格上は“±その周辺の値で表示できる値の中では最良”、すなわち“表現可能な上界の最小値または表現可能な下界の最大値”、それならギリギリ実用可能な速度くらいは出せるけど、それとて難しい、そこまで今のライブラリが保証してくれてるかあやしい
まぁその手のライブラリ使わずに“最近値”を出すことはメチャクチャ手間かかるけどできなくはない、しかしそれが限界、その値を変数に確実にセットする方法がない
x^y = exp( y * log 2 )
で実装してるんじゃないかな
そもそものexpやlogが“最近値”を与えてくれることなど規格にはないやろ
それは数値計算の理論勉強してたらすぐわかる、メチャクチャ難しくてほとんど実装不能になってしまう
だから規格上は“±その周辺の値で表示できる値の中では最良”、すなわち“表現可能な上界の最小値または表現可能な下界の最大値”、それならギリギリ実用可能な速度くらいは出せるけど、それとて難しい、そこまで今のライブラリが保証してくれてるかあやしい
まぁその手のライブラリ使わずに“最近値”を出すことはメチャクチャ手間かかるけどできなくはない、しかしそれが限界、その値を変数に確実にセットする方法がない
947デフォルトの名無しさん
2023/07/15(土) 16:25:05.71ID:P30TlPMe x^y = exp( y log (x))ね
この計算に入る前に「x=2, yが整数であるかどうか検査する、その場合には仮数部は弄らず指数部だけyに応じて増減させる」なんて処理してるライブラリはないやろ
有無を言わさずy log(x)計算、→exp計算、丸め誤差上等でやってるやろ、そこで単精度計算ならちょっと余裕もってビット幅大きめのアキュムレータに入れてるかもしれんけどどんなに大きな精度のアキュムレーターを用意したとて出てくる値が“最近値”になる保証はない、そこまで保証しようとすると恐ろしくコストがかかってしまう
汎用の数値計算ライブラリでそこまで保証されてるわけないと思う、単精度計算なら±2^(-24)=単精度の内部表現で可能な幅までは保証するのが限界だと思う、それとてかなりコストがかかるし
まぁどのみち2^(-23)以上の精度が必要ならそもそも言語の標準ライブラリなんか使わんからな
この計算に入る前に「x=2, yが整数であるかどうか検査する、その場合には仮数部は弄らず指数部だけyに応じて増減させる」なんて処理してるライブラリはないやろ
有無を言わさずy log(x)計算、→exp計算、丸め誤差上等でやってるやろ、そこで単精度計算ならちょっと余裕もってビット幅大きめのアキュムレータに入れてるかもしれんけどどんなに大きな精度のアキュムレーターを用意したとて出てくる値が“最近値”になる保証はない、そこまで保証しようとすると恐ろしくコストがかかってしまう
汎用の数値計算ライブラリでそこまで保証されてるわけないと思う、単精度計算なら±2^(-24)=単精度の内部表現で可能な幅までは保証するのが限界だと思う、それとてかなりコストがかかるし
まぁどのみち2^(-23)以上の精度が必要ならそもそも言語の標準ライブラリなんか使わんからな
948915
2023/07/15(土) 18:15:18.86ID:HHeu+C79 >>946
規格で正確な値(を最近値に丸めたもの)を求められてるのは
加減乗除とsqrt()とfma()でしたっけ?
pow()は、glibcが誤差0.523ulpとか(0.5ulpが限界値)、
イイ線行ってるそうですね。
tps://members.loria.fr/PZimmermann/papers/accuracy.pdf
規格で正確な値(を最近値に丸めたもの)を求められてるのは
加減乗除とsqrt()とfma()でしたっけ?
pow()は、glibcが誤差0.523ulpとか(0.5ulpが限界値)、
イイ線行ってるそうですね。
tps://members.loria.fr/PZimmermann/papers/accuracy.pdf
949デフォルトの名無しさん
2023/07/15(土) 21:46:41.49ID:0NaOek0L おお、llvmすげぇ
950915
2023/07/15(土) 23:31:05.73ID:HHeu+C79 >>949
llvmの多くの項目がNA(non available)なのは、
実装されてないからではないかと。
この中では、OpenLibmがfdlibmの「血」を残してる方なのかな?
tps://www.netlib.org/fdlibm/
llvmの多くの項目がNA(non available)なのは、
実装されてないからではないかと。
この中では、OpenLibmがfdlibmの「血」を残してる方なのかな?
tps://www.netlib.org/fdlibm/
951デフォルトの名無しさん
2023/07/16(日) 00:22:02.04ID:Cy0F/L8f うん、多分実装されてない分は自分でやれと
実装されてるところは軒並み0.5
まぁこれも本当に確率100%で必ず最近値出すんではなくて外れる確率が0.000001%とかなんだろうな
例えば単精度演算は毎回倍精度にキャストして計算してから丸めればほぼほぼ最近値にならない確率0.0000001%とかになるからな
逆に言えば他のライブラリはその手のキャストも何もしないで“丸め誤差上等”でやってるんやろな
実装されてるところは軒並み0.5
まぁこれも本当に確率100%で必ず最近値出すんではなくて外れる確率が0.000001%とかなんだろうな
例えば単精度演算は毎回倍精度にキャストして計算してから丸めればほぼほぼ最近値にならない確率0.0000001%とかになるからな
逆に言えば他のライブラリはその手のキャストも何もしないで“丸め誤差上等”でやってるんやろな
952915
2023/07/16(日) 01:29:25.23ID:34tdZpnq >>951
ちゃんとやろうとすると、CRlibmみたいに、部分的にでも
6倍精度とかで計算しないとならないっぽいです。
glibcのexp()は768bitで計算する場合があるそうで。
…世間的には、それ程の精度を求めない用途もあって、
実際、libmのhypot()(じゃなくてもいいのですが)が遅いので自分で
実装しますたと云う報告がネット上でも散見されます
(もちろん精度は落ちる)
ちゃんとやろうとすると、CRlibmみたいに、部分的にでも
6倍精度とかで計算しないとならないっぽいです。
glibcのexp()は768bitで計算する場合があるそうで。
…世間的には、それ程の精度を求めない用途もあって、
実際、libmのhypot()(じゃなくてもいいのですが)が遅いので自分で
実装しますたと云う報告がネット上でも散見されます
(もちろん精度は落ちる)
953デフォルトの名無しさん
2023/07/16(日) 08:49:44.74ID:Q2/lNXhi まじですか
768bitって何をどう計算してるんやろ?
結果が24bitで768bitなら求める答えの72倍のアキュムレーター使うのかな?
そんな事ないよな、アキュムレータは48bitくらいで36回計算するからのべ768bitとかいう事なのかな?
まぁそれだけの事やって「末尾の最後の1ビットの正確性を求める意味あんのか問題」は発生するわな
”みんなが使う汎用ライブラリ”だとどうしてもそういう“誰も求めてない精度”に無意味にこだわってしまう部分があるんかも
768bitって何をどう計算してるんやろ?
結果が24bitで768bitなら求める答えの72倍のアキュムレーター使うのかな?
そんな事ないよな、アキュムレータは48bitくらいで36回計算するからのべ768bitとかいう事なのかな?
まぁそれだけの事やって「末尾の最後の1ビットの正確性を求める意味あんのか問題」は発生するわな
”みんなが使う汎用ライブラリ”だとどうしてもそういう“誰も求めてない精度”に無意味にこだわってしまう部分があるんかも
954915
2023/07/16(日) 10:57:33.80ID:34tdZpnq955デフォルトの名無しさん
2023/07/16(日) 11:52:54.00ID:YiXq44MV >>954
まじですか?
そんな最後の1ビット正確に決定するために768bitもの無駄な計算するくらいなら誤差±2^(-23)でいいからとっとと値返してくれた方がいいのに
なので当然通常“最後の1ビット”の正確性までは規格に入れてないんだよな、それでもライブラリ作成者は自己満のために誰も求めない“最後の1ビット”にこだわる
これは高校くらいまでの近似計算の「小数第××位まで求めよ」のノリが抜けてない事の現れでもあるんだよな
もう計算論の近似計算の世界ではゲームチェンジが起こってる事に気づけてない
まじですか?
そんな最後の1ビット正確に決定するために768bitもの無駄な計算するくらいなら誤差±2^(-23)でいいからとっとと値返してくれた方がいいのに
なので当然通常“最後の1ビット”の正確性までは規格に入れてないんだよな、それでもライブラリ作成者は自己満のために誰も求めない“最後の1ビット”にこだわる
これは高校くらいまでの近似計算の「小数第××位まで求めよ」のノリが抜けてない事の現れでもあるんだよな
もう計算論の近似計算の世界ではゲームチェンジが起こってる事に気づけてない
956915
2023/07/16(日) 12:36:42.33ID:34tdZpnq >>955
誤差なし(±0.5ulp以内)を追及する人達(CORE-MATH)も居れば、
double-double演算とかの「飛び道具」を使うのをよしとしない人達も居て、
えーっと、みんな違ってみんないい(こなみ)
誤差なし(±0.5ulp以内)を追及する人達(CORE-MATH)も居れば、
double-double演算とかの「飛び道具」を使うのをよしとしない人達も居て、
えーっと、みんな違ってみんないい(こなみ)
957デフォルトの名無しさん
2023/07/16(日) 13:03:43.49ID:nweoM3+S まぁしかし“払うコスト”に対する“リターン”が少なすぎる気はする
例えば内部表現の精度が2^24まである単精度の計算をする場合、もちろん理想は“誤差±1/2×2^(-24)”で返してくれるとありがたい
しかし現実できるか?
例えばアキュムレータをを32ビット用意して計算する、マクローリン展開で求めるとして100回で打ち切るとする、打ち切り誤差は入力のサイズによるけど十分小さい、丸め誤差は2^(-32)×100で誤差トータルは2^(-25)程度、返すのが24bitだから丸められる2^8の可能性のうち真値のポジションから最大100ずれたところでウロチョロしてるわけでその“ウロチョロ”が二項分布、真値の分布が256個の箱の一様分布として外れ値になるの確率がどのくらいやろ?暗算ではできないけど言うほどない、この言うほどない誤差を返さないただそれだけのために768bitも計算繰り返すとかどうなんって感じ
例えば内部表現の精度が2^24まである単精度の計算をする場合、もちろん理想は“誤差±1/2×2^(-24)”で返してくれるとありがたい
しかし現実できるか?
例えばアキュムレータをを32ビット用意して計算する、マクローリン展開で求めるとして100回で打ち切るとする、打ち切り誤差は入力のサイズによるけど十分小さい、丸め誤差は2^(-32)×100で誤差トータルは2^(-25)程度、返すのが24bitだから丸められる2^8の可能性のうち真値のポジションから最大100ずれたところでウロチョロしてるわけでその“ウロチョロ”が二項分布、真値の分布が256個の箱の一様分布として外れ値になるの確率がどのくらいやろ?暗算ではできないけど言うほどない、この言うほどない誤差を返さないただそれだけのために768bitも計算繰り返すとかどうなんって感じ
958915
2023/07/16(日) 13:09:49.90ID:34tdZpnq959デフォルトの名無しさん
2023/07/16(日) 14:04:25.82ID:JCFIIFPR でしょうね
流石に768bitはない
せめてそこまで行けば完全に最近値が決定できるならともかくそこまで行っても最近値を100%決めるのは無理なんじゃないでしょうか?
24ビットの値返すのに768bitまで計算するなら744bit、2^744の可能性につきあってそこまで行っても両端の100通りの可能性は残り、最近値を返せない可能性は0にはなってない、まぁほとんど0だけど
多分llvmの実装は単精度でも最初からアキュムレータに64bit(レジスタ2個分)で計算するんやろな、あまりのビットが40bitあって100/2^40とか1000/2^40とかはほとんど0だからほぼ確率1で最近値返しますよ、それで十分でしょって実装なのではなかろかと、実際それで十分
最近のcpuはなんかレジスタ2個分に分けて計算してもレジスタ1個で計算するのと時間大して変わらないという話もききますしね
流石に768bitはない
せめてそこまで行けば完全に最近値が決定できるならともかくそこまで行っても最近値を100%決めるのは無理なんじゃないでしょうか?
24ビットの値返すのに768bitまで計算するなら744bit、2^744の可能性につきあってそこまで行っても両端の100通りの可能性は残り、最近値を返せない可能性は0にはなってない、まぁほとんど0だけど
多分llvmの実装は単精度でも最初からアキュムレータに64bit(レジスタ2個分)で計算するんやろな、あまりのビットが40bitあって100/2^40とか1000/2^40とかはほとんど0だからほぼ確率1で最近値返しますよ、それで十分でしょって実装なのではなかろかと、実際それで十分
最近のcpuはなんかレジスタ2個分に分けて計算してもレジスタ1個で計算するのと時間大して変わらないという話もききますしね
960915
2023/07/16(日) 14:30:41.46ID:34tdZpnq >>959
以前は最近値だったそうです(その代わり遅い)
tps://sourceware.org/git/?p=glibc.git;a=commit;h=6fd0a3c6a887a91b1554730c977657a7e65334cc
以前は最近値だったそうです(その代わり遅い)
tps://sourceware.org/git/?p=glibc.git;a=commit;h=6fd0a3c6a887a91b1554730c977657a7e65334cc
961デフォルトの名無しさん
2023/07/16(日) 15:00:29.88ID:8Io8J2M0 その記事はglibcで色々実験してみたの報告ですね
どっかに“旧glibcは最近値をとことんまで出す”って別資料の記事見かけました?
もちろん入力された有理数xに対してexp(x)を時間無制限ならその与えられた桁数までの最近値を計算するアルゴリズムはすぐ作れるので(一般にGaussの超幾何関数からくる連分数表示が可能な実数ならそのような事が可能)そういうライブラリを実装するのはまぁ無理ではないんですけどね
実際円周率をリソースが食い尽くされるまで延々と計算し続けるプログラムとかよくネットで転がってますし、確か昔のrubyのサンプルプログラムにも収録されてたような
どっかに“旧glibcは最近値をとことんまで出す”って別資料の記事見かけました?
もちろん入力された有理数xに対してexp(x)を時間無制限ならその与えられた桁数までの最近値を計算するアルゴリズムはすぐ作れるので(一般にGaussの超幾何関数からくる連分数表示が可能な実数ならそのような事が可能)そういうライブラリを実装するのはまぁ無理ではないんですけどね
実際円周率をリソースが食い尽くされるまで延々と計算し続けるプログラムとかよくネットで転がってますし、確か昔のrubyのサンプルプログラムにも収録されてたような
962デフォルトの名無しさん
2023/07/20(木) 22:27:12.42ID:VHXXslhm964デフォルトの名無しさん
2023/07/21(金) 07:58:12.84ID:XtiUJMX6 >>927
Rust
fn foo(input: u32) -> impl Iterator<Item = u32> {
(0..=input).filter(move |n| n & input == *n)
}
ただしこれではループがO(n)
ループをO(log N)にするならこちら
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input).map(|p| 1 << p).collect();
(0..(1 << table.len())).map(move |bits| bits_iter(bits).map(|p| table[p as usize]).sum())
}
補助bitsイテレータ
fn bits_iter(n: u32) -> impl Iterator<Item = u32> {
let mut n = n;
std::iter::from_fn(move || {
(n != 0).then(|| {
let p = n.trailing_zeros();
n &= !(1 << p);
p
})
})
}
Rust
fn foo(input: u32) -> impl Iterator<Item = u32> {
(0..=input).filter(move |n| n & input == *n)
}
ただしこれではループがO(n)
ループをO(log N)にするならこちら
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input).map(|p| 1 << p).collect();
(0..(1 << table.len())).map(move |bits| bits_iter(bits).map(|p| table[p as usize]).sum())
}
補助bitsイテレータ
fn bits_iter(n: u32) -> impl Iterator<Item = u32> {
let mut n = n;
std::iter::from_fn(move || {
(n != 0).then(|| {
let p = n.trailing_zeros();
n &= !(1 << p);
p
})
})
}
965デフォルトの名無しさん
2023/07/21(金) 08:19:47.60ID:XtiUJMX6 >>964
rustfmtがギリギリ2行にまとめてしまうが見にくいので手動で以下へ補正
(改行の違いだけでコード自体は同じです)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len()))
.map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
rustfmtがギリギリ2行にまとめてしまうが見にくいので手動で以下へ補正
(改行の違いだけでコード自体は同じです)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len()))
.map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
966デフォルトの名無しさん
2023/07/21(金) 13:18:40.51ID:p6hqStjf 見やすさどうこうならオンラインの実行環境に入れたほうが見やすい
967デフォルトの名無しさん
2023/07/21(金) 20:43:39.96ID:eNxuBSnx >>963
まず
@Rを自由に動かしてコマンドリストを得てから、SをRと衝突しないように動かしてコマンドリストを得る。
次に優先権を逆転させ、
ASを自由に動かしてコマンドリストを得てから、RをSと衝突しないように動かしてコマンドリストを得る。
そして、@とAでコマンドリストが短い方を解として採用する。
コマンドリストを得る方法は基本的には>>856と同じ幅優先探索だが、>>856のように2次元の数値配列を作り
各マスへ最短何個のコマンドで到達できるかを記録するだけでは今回の問題の複雑な動きには対処できないから、
3次元の論理配列を作り1個のコマンドで各マスへ到達できるか否か、2個のコマンドで各マスへ到達できるか否か、
3個のコマンドで〜、…を記録していくように変えた。
26行目はB[Q]が何回も現れてごちゃごちゃしているので、変数をもう1個作って
b <- B[Q]
A[i + 1, , ][Q[b != Inf & b != i + 1 & (b != i | b[1] != i + 1), , drop = FALSE]] <- TRUE
と書く方が行数は増えるがすっきりする。36行目も同様。
まず
@Rを自由に動かしてコマンドリストを得てから、SをRと衝突しないように動かしてコマンドリストを得る。
次に優先権を逆転させ、
ASを自由に動かしてコマンドリストを得てから、RをSと衝突しないように動かしてコマンドリストを得る。
そして、@とAでコマンドリストが短い方を解として採用する。
コマンドリストを得る方法は基本的には>>856と同じ幅優先探索だが、>>856のように2次元の数値配列を作り
各マスへ最短何個のコマンドで到達できるかを記録するだけでは今回の問題の複雑な動きには対処できないから、
3次元の論理配列を作り1個のコマンドで各マスへ到達できるか否か、2個のコマンドで各マスへ到達できるか否か、
3個のコマンドで〜、…を記録していくように変えた。
26行目はB[Q]が何回も現れてごちゃごちゃしているので、変数をもう1個作って
b <- B[Q]
A[i + 1, , ][Q[b != Inf & b != i + 1 & (b != i | b[1] != i + 1), , drop = FALSE]] <- TRUE
と書く方が行数は増えるがすっきりする。36行目も同様。
968蟻人間 ◆T6xkBnTXz7B0
2023/07/21(金) 21:36:35.00ID:GfD0zzOH969デフォルトの名無しさん
2023/07/22(土) 07:20:14.13ID:Ya5NOP1D >>966
なるほど!
専ブラではなくWebブラウザから見るとインデントスペースが消えてしまうのですね
>>927
Rust全文
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=f627f3a5de4a0c467f015a8b1527c141
抜粋 (全角スペース使用)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len())).map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
なるほど!
専ブラではなくWebブラウザから見るとインデントスペースが消えてしまうのですね
>>927
Rust全文
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=f627f3a5de4a0c467f015a8b1527c141
抜粋 (全角スペース使用)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len())).map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
970デフォルトの名無しさん
2023/07/22(土) 11:35:32.67ID:YLqzZrt5 デスクトップアプリで5ch専ブラを造れ
971デフォルトの名無しさん
2023/07/23(日) 12:51:38.77ID:g/6/koRD972デフォルトの名無しさん
2023/07/23(日) 22:13:46.62ID:5wwn3n8Y スレ違いなんだけど今回の騒動出遅れてよくわからんのわけとこの山下ってのが5chに対して反乱分子起こしたん?
それは何故?
もうニュー速+とかでも過去の話でスレも立ってないしググっても出てこない
何がどうなったん?
それは何故?
もうニュー速+とかでも過去の話でスレも立ってないしググっても出てこない
何がどうなったん?
973デフォルトの名無しさん
2023/07/25(火) 09:52:03.45ID:dyNDjhLG トーク過疎ってんな
こりゃクーデター失敗かな
こりゃクーデター失敗かな
974デフォルトの名無しさん
2023/07/25(火) 14:53:46.34ID:iTChcdyR 本能寺が変
975蟻人間 ◆T6xkBnTXz7B0
2023/07/26(水) 21:23:20.74ID:vhd+IIfp お題: 化学の共有結合。
x, y, zをそれぞれ任意の自然数とする。入力(x, y, z)に対して炭素原子(C)x個、酸素原子(O)y個、水素原子(H)z個のすべてを
共有結合で連結するときの連結結果の組み合わせをすべて出力するプログラムを書け。
出力形式は自由とする。
入力例)
(0, 1, 2)→?
(1, 1, 4)→?
(1, 0, 4)→?
x, y, zをそれぞれ任意の自然数とする。入力(x, y, z)に対して炭素原子(C)x個、酸素原子(O)y個、水素原子(H)z個のすべてを
共有結合で連結するときの連結結果の組み合わせをすべて出力するプログラムを書け。
出力形式は自由とする。
入力例)
(0, 1, 2)→?
(1, 1, 4)→?
(1, 0, 4)→?
976デフォルトの名無しさん
2023/07/27(木) 09:04:26.01ID:GoQM94Wc H2O2ってなんていう結合だっけ
977デフォルトの名無しさん
2023/07/27(木) 12:12:58.81ID:/bGsBsBb978デフォルトの名無しさん
2023/07/27(木) 12:13:17.86ID:/bGsBsBb 誤爆orz
979デフォルトの名無しさん
2023/07/27(木) 15:18:31.87ID:gIycSMlB まず共有結合とはどんなものなのかを調べてからでないと作れないが、今のところ調べてまで作りたいとは思わない。
981デフォルトの名無しさん
2023/07/28(金) 06:23:08.46ID:dM/IOnaa 情報科学的元素共有結合の勝手な定義を書いとかなければ問題にならない
982蟻人間 ◆T6xkBnTXz7B0
2023/07/28(金) 12:57:32.49ID:EWzuT5tC 共有結合について高校化学でよく言われるのは、次の通り。
炭素原子は「結合の手」を4個持っている。
酸素原子は「結合の手」を2個持っている。
水素原子は「結合の手」を1個持っている。
結合の手を余らさないように連結する。
分子の右手型左手型の区別は考えなくてよい。
連結のときの他の原子との重なりは考えなくてもよい。
炭素原子は「結合の手」を4個持っている。
酸素原子は「結合の手」を2個持っている。
水素原子は「結合の手」を1個持っている。
結合の手を余らさないように連結する。
分子の右手型左手型の区別は考えなくてよい。
連結のときの他の原子との重なりは考えなくてもよい。
983蟻人間 ◆T6xkBnTXz7B0
2023/07/30(日) 17:36:04.42ID:x27rHRHa お題: パソコン、スマホ、またはタブレットに大きな顔を表示して、音声入力と
音声出力で会話ができるようにする。
音声出力で会話ができるようにする。
984デフォルトの名無しさん
2023/07/31(月) 02:56:25.48ID:aNRF9KkN985デフォルトの名無しさん
2023/07/31(月) 10:04:39.36ID:8wbRk2dY H2Oってなんで真っすぐじゃなくてくの字に折れてるんだろ
986デフォルトの名無しさん
2023/07/31(月) 10:05:41.12ID:8wbRk2dY987蟻人間 ◆T6xkBnTXz7B0
2023/07/31(月) 14:11:26.12ID:utupSPZZ お題: 気体の状態方程式より温度を求める。
半径ゼロで70000個の水素分子のみが底面半径4[cm]、高さh[cm]の円すい形の密閉空間内をまんべんなく飛び回る。
密閉空間の高さh[cm]を入力とするとき、圧力P=1.013*10^5 [Pa]、密閉空間の体積V[m^3]、水素分子の物質量n[mol]、気体定数R=8.31について、
気体の状態方程式PV=nRTより導かれる絶対温度T[K]を出力せよ。
入力例)
10→?
20→?
50→?
半径ゼロで70000個の水素分子のみが底面半径4[cm]、高さh[cm]の円すい形の密閉空間内をまんべんなく飛び回る。
密閉空間の高さh[cm]を入力とするとき、圧力P=1.013*10^5 [Pa]、密閉空間の体積V[m^3]、水素分子の物質量n[mol]、気体定数R=8.31について、
気体の状態方程式PV=nRTより導かれる絶対温度T[K]を出力せよ。
入力例)
10→?
20→?
50→?
988デフォルトの名無しさん
2023/07/31(月) 14:46:35.12ID:sgBBFIN2 70000個ってどうやって数えたん?
990デフォルトの名無しさん
2023/07/31(月) 18:09:03.77ID:Pczz8g0N 現代の地球人の技術力ではT=0にでもしないと無理そうだし
もしそうなら水素は固体化してて
Vの大部分は真空でPはほぼ0なんじゃないかな
もしそうなら水素は固体化してて
Vの大部分は真空でPはほぼ0なんじゃないかな
991デフォルトの名無しさん
2023/08/01(火) 07:02:39.12ID:jESfOyT1 はいはい unsafe { 未定義動作 }
992638
2023/08/01(火) 07:13:10.69ID:FpN06ruh なぜ中高理科の試験問題をここで…
993デフォルトの名無しさん
2023/08/01(火) 10:53:13.82ID:AvEKEx5a T = PV/nR
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000*8.314 * 6.022*10^23 *10^3 )
= 1.453*10^(-29)*h ( K )
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000*8.314 * 6.022*10^23 *10^3 )
= 1.453*10^(-29)*h ( K )
994蟻人間 ◆T6xkBnTXz7B0
2023/08/01(火) 12:37:22.46ID:NTrANRpP 分子が多すぎて現実的なシミュレーションは難しいね。
995デフォルトの名無しさん
2023/08/01(火) 13:12:18.01ID:oNEwqf/W T = PV/nR
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000 / (6.022*10^23) *10^3 * 8.314 )
= 5.269*10^18*h ( K )
= 1.013*10^5 * (4.000)^2*3.142*h/1000
/( 70000 / (6.022*10^23) *10^3 * 8.314 )
= 5.269*10^18*h ( K )
996デフォルトの名無しさん
2023/08/02(水) 09:29:52.97ID:4pI1Wfnv h=0で誤動作する罠
997デフォルトの名無しさん
2023/08/02(水) 23:17:43.36ID:sBo1wUiw そもそも分子の運動をシュミレーションしてp,v,nTの関係を調べさせるつもりなら出題がおかしい
それなら入力が温度、分子量、体積で出力が圧力やろ
それなら入力が温度、分子量、体積で出力が圧力やろ
998デフォルトの名無しさん
2023/08/03(木) 03:48:48.75ID:/xW45k0z シミュレーション
999デフォルトの名無しさん
2023/08/03(木) 13:32:25.90ID:Lr04Zjag PV=nRTは高校物理
1000デフォルトの名無しさん
2023/08/03(木) 13:32:47.33ID:Lr04Zjag 熱力学は
ヘンリーの法則
ラウールの法則
に従う
ヘンリーの法則
ラウールの法則
に従う
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 262日 18時間 32分 12秒
新しいスレッドを立ててください。
life time: 262日 18時間 32分 12秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★3 [お断り★]
- トランプ氏、女性記者に「ブタ、静かに」 エプスタイン元被告めぐる質問さえぎる [1ゲットロボ★]
- 【株価】日経平均、上げ幅一時2000円超 5万円台を回復 [蚤の市★]
- 高市首相「台湾有事」発言引き出した「立憲・岡田克也氏」に聞いた質問の真意「これはマズイ発言だと」少しずらしてみたが焼け石に水 ★2 [ぐれ★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- AI搭載ぬいぐるみ「クッマ」、性的に露骨な会話をエスカレート、消費者団体の指摘で販売中止に [おっさん友の会★]
- 【高市感謝】韓国政府「福島第一原発からの16回目の汚染水放出が終わった。モニタリング結果は基準値の1/37と低かった」 冷静な対応 [485983549]
- トランプ「中国が他国産より高値で米国産大豆を大量購入してくれた。中国最高!」 どっかのバカ日本人との差w [271912485]
- 【高市餅】 もち米不足が深刻。 正月用のお餅は値上げ。 去年より5割以上高騰。 晋さん、もう日本人はお正月にお餅を食べれないよ、、、 [485983549]
- 日本人「な、なぜだ?なぜこの件で日本を助けてくれる国が0カ国なんだ!?」。日本人、さすがに気づく [805596214]
- 【高市摘発】 外国人労働者にボーナスや有給休暇を与えない悪質事業所を摘発。 差別待遇や賃金未払いなども調査へ [485983549]
- ホタテ6t(トン)、返品されるwwwwwwwwwwwwwwwwwwwwwwww [329329848]
