プログラミングのお題スレ Part15
■ このスレッドは過去ログ倉庫に格納されています
5chなんて無駄にマウント取るやつばっかりだから、コテつけてごちゃごちゃ言っても時間の無駄だぞ 袋叩きにあうだけ 気を取り直していくぞ。 お題: 現在時刻のアナログ時計のSVG画像を出力せよ。丸い外枠と短針と長針だけでいいが、可能なら秒針と文字盤も表示せよ。 暇な人向けのお題:なるべく公正な多数決システムを考案せよ。 サンプル:https://ideone.com/Ayr1Az 上記は多数決して、3人サンプルして、じゃんけんする。というプロセスで導き出される。 暇な人向けのお題II! 9x9のセルが与えられる。そのセルは磁石である。 真空状態での磁気シミュレーションをして量子コンピュータに近似せよ。 一つの万能ではない方針。 1パス目で相互作用を足し込む。 2パス目で相互作用の蓄積を作用素数で割る。 ライフゲームがヒントになるかもしれない。 >>803 なお、自分は物理学も数学も素人である。。。Orz お題 入力された正整数を漢数字表記にして出力せよ 10の何乗まで対応するかは任せる 514 -> 五百十四 131072 -> 十三万千七十二 90010 -> 九万十 >>805 python %pip install kanjize from kanjize import int2kanji, kanji2int print(int2kanji(123456789)) # 一億二千三百四十五万六千七百八十九 じゃあunicodeにシュメル文字が収録されたので、それで。 フフフ、ライブラリなんてあるまい >>809 Python %pip install sumerianize from fumerianize import int2sumerian, sumerian2int print(int2sumerian(123456789)) # ???????????????????????? 逆も欲しいな 漢数字を入れるとアラビア数字に変換するプログラム >>805 それと同じお題を以前出した覚えがある。 まあいいか。スレ見に来てる人も変わってるだろうし。 >>813 表示できていないのは見る人がフォントを入れていないからだろ。 不思議でも何でもない。 >>812 それと同じお題も過去にあったような。双方向で変換ってやつかな。 まだやったことない人なら頭の体操(またはボケ防止)にはなるからやってみると良いと思う。 >>812 漢数字変換 - Perl表技集 http://www2u.biglobe.ne.jp/ ~MAS/perl/waza/kansuji.html これですな 実はcpanからお題を決めてるんじゃないかなというのがしばらく続いてたと思う 適当な整数を入力してそれが円周率の何桁目で出てくるか出力せよ。 何桁まで対応するかは任せる。 perl だと m/digit/p からの $^{prematch} とかだな >>821 Perl5、小数点以下10000桁まで一番最初に見つかった桁を出力 $d = 893; # 適当な整数 use Math::BigFloat try => 'GMP,Pari'; $pi = Math::BigFloat->bpi(10000); #print "$pi\n"; $pi =~ s/\.//; # 小数点「.」を除去 $i = index $pi, $d; print $i < 0 ? "無し\n" : "小数点以下 $i 桁目\n"; 実行結果 ~ $ perl 15_821.pl 小数点以下 999 桁目 >>823 一度にある桁まで求めておいてから検索するよりも、 ガウス=ルジャンドルのアルゴリズムまたはラマヌジャンの式を使うなどして 下の桁まで収束を進めながら検索してゆく方が面白かったかな じゃあそれにしよう。 適当な文章を入力して縦横斜めにぬるぽの3文字が入っていればガッと出力する。 ひらがなだけにするかそれ以上の対応をするかは任せる。 >>829 Python %pip install nurupo from nurupo import nurupofield if nurupofield("ぬるぽ") print("ガッ") # ガッ お題:整数配列の奇数要素のみをソートした配列を返す処理を書いてください 入力例:[6, 5, 4, 3, 2, 1] 出力例:[6, 1, 4, 3, 2, 5] 奇数だけ抜き出した配列作成→ソート→元の配列の奇数の位置にソートした配列の要素を入れてくだけで良さそう >>832 Perl5 @s = (6, 5, 4, 3, 2, 1); @ix = grep{$s[$_] & 1} keys @s; @iy = sort{$s[$a] <=> $s[$b]} @ix; @s[@ix] = @s[@iy]; use Data::Dump 'dump'; print dump @s; 実行結果 ~ $ perl 15_832_sort_odd_elem.pl (6, 1, 4, 3, 2, 5) >>832 J f =: 3 : 0 a =. I. 2 | y b =. /:~ a { y b (a) } y ) f 6 5 4 3 2 1 6 1 4 3 2 5 >>832 p [6, 5, 4, 3, 2, 1].partition.with_index{|_, i| i.even?}.then{|e, o| e.zip(o.sort).flatten} # => [6, 1, 4, 3, 2, 5] >>839 [6, 5, 3, 2, 1] とかだと結果が間違っている上、nilとか足されてひどいことになるyo? p [6, 5, 3, 2, 1].partition.with_index{|_, i| i.even?}.then{|e, o| e.zip(o.sort).flatten} # => [6, 2, 3, 5, 1, nil] 正しくは => [6, 1, 3, 2, 5] >>832 Kotlin https://paiza.io/projects/RXWCx9-WsZvakBKGgIo1UA やり方は >>834 に書かれている通り。 しかし、もっとスマートな方法はないものか? ありそうだが思い浮かばない。 >>842 配列コピーしない場合奇数が出たらその後の要素を見て一番小さい奇数と要素の交換でもどう? 配列のコピー不要や。 アプリ作成したいのですが、素人なのでどなたか相談に乗ってください。 飲み物が入ったコップを定期的に重量を量り、 そのデータを無線で受信してサーバーで記録し プロットするアプリを作りたいです。 またRaspiなどのPCはなしで作りたいのですが 組み込みPC?を使わないとできませんか? またこういったアプリに適した言語などありますでしょうか? プログラム部分はたいしたことがないとおもうのだが 装置、ハードのほうが大事だろ そもそもプログラムもハード依存するかもしれないし 特に既成品なら ありがとうございます。 ハードウェアの知識が全く無いため困っています。 飼い猫のために水の量を管理してあげたいんです。 下記のような組み合わせで出来そうでしょうか? ADコンバータ KKHMF HX711モジュール 秤量センサー 24位精度ADモジュール 圧力センサーモジュール 重量センサー uxcell 計量ロードセル アルミ合金材質 500g計量 電子天秤 有線 計量センサー やり方わからないんだけど、カメラで撮影して映像解析して量が分かるのであればスマホやタブレット用のアプリでできそうだよね。 (PCに小さいカメラ付けても良いが)。 センサーの話題などは、Linux 板のラズパイのスレで聞けば? >>848 適当なIoTの計り買えば解決 実装はCだろうな >>832 Ruby で、 input_ary = [ 6, 5, 4, 3, 2, 1 ] odd_ary = [ ]; index_ary = [ ] input_ary.each_with_index do |num, idx| if num.odd? odd_ary.push num index_ary.push idx end end odd_ary.sort! # ソート # 同時に、複数の配列をループする index_ary.zip( odd_ary ).each { |idx, num| input_ary[ idx ] = num } p input_ary >> 849 , 850, 851, 852 情報ありがとうございます。 スレチだったみたいで申し訳ないです。 センサーありきなので、Raspiは使わないと思うのですが 板覗いてみます。 >>832 https://ideone.com/FKifBY C++。クイックソート書けないので謎のソートでお茶を濁す。 お題: 端末上で(´・ω・`)を端から端まで移動し、往復させよ ただし、端についたら(´・ω・`)は増幅し(´・ω・`)(´・ω・`)になる 同様に再び端についたら(´・ω・`)(´・ω・`)は増幅し(´・ω・`)(´・ω・`)(´・ω・`)になる 左右に移動できなくなる又ははみ出す場合は逆に(´・ω・`)を減らしていき、最終的に(´・ω・`)を消滅させよ お題: Unicode 1 文字を与えると East Asian Width に従った属性値を返す関数を作成し、その関数に対して任意の文字を与えてテストするプログラムを作れ。 返す属性値の F, H, W, Na, A, N は文字列でも良いし対応する数値でも良いし enum のような(またはCなら #define されている)名前でも良い。 East Asian Width の一覧は下記URLのテキストの内容を使用する。これを最初に読んで初期化するように作っても良いし、最初からプログラムに適した形式で埋め込まれていても良い。 http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt 参考: 東アジアの文字幅 https://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85 お題:>>832 に「偶数要素は2で割って降順ソート」という要件を追加してください すでに回答済みの場合は最少限の変更でのご対応で腕(もしくは言語のポテンシャル)を見せてください >>858 入力例:[0, 9, 8, 4, 6, 5, 1, 2, 7, 3] 出力例:[4, 1, 3, 2, 1, 3, 5, 0, 7, 9] >>832 Pharo/Squeak Smalltalk | fn | fn := [:arr | | sortedOdds | sortedOdds := (arr select: #odd) sort readStream. arr collect: [:x | x odd ifTrue: [sortedOdds next] ifFalse: [x]] ]. fn value: #(6 5 4 3 2 1) "=> #(6 1 4 3 2 5) " >>835 | fn | fn := [:arr | | sortedOdds sortedHalfEvens | sortedOdds := (arr select: #odd) sort readStream. sortedHalfEvens := ((arr select: #even) sort reversed / 2) readStream. arr collect: [:x | x odd ifTrue: [sortedOdds next] ifFalse: [sortedHalfEvens next]] ]. fn value: #(0 9 8 4 6 5 1 2 7 3) "=> #(4 1 3 2 1 3 5 0 7 9) " >>859 Perl5、最小限でか… @s = (0, 9, 8, 4, 6, 5, 1, 2, 7, 3); @ix = grep{$s[$_] & 1} keys @s; @iy = sort{$s[$a] <=> $s[$b]} @ix; @s[@ix] = @s[@iy]; @iz = grep{~$s[$_] & 1} keys @s; @s[@iz] = map{$_ / 2} reverse sort{$a <=> $b} @s[@iz]; use Data::Dump 'dump'; print dump @s; 実行結果 ~ $ perl 15_859.pl (4, 1, 3, 2, 1, 3, 5, 0, 7, 9) >>856 Porwershell。バージョンによってはプロンプト画面に直接貼り付けると$sの文字列が 化けるので、その場合はファイルに保存して実行。 $s = "('・ω・``)" $w = $Host.UI.RawUI.WindowSize.Width - 1 $m = [Math]::Floor($w / 10) foreach ($n in 1..$m + ($m - 1)..0) { $d = $w - 10 * $n foreach ($x in (($d..1), (1..$d))[$n % 2]) { $l = "`r" + " " * $x + $s * $n + " " * ($d - $x) Write-Host $l -NoNewline if (!$n) {Write-Host; break} Sleep -m 20 } } Mathematica12 定義 f1[a_]:=SubsetMap[Sort,a,Position[a,_?OddQ,1]] f2[a_]:=SubsetMap[ReverseSort[#]/2&,f1[a],Position[a,_?EvenQ,1]] 実行結果 f1[{6,5,4,3,2,1}] {6,1,4,3,2,5} f2[{0,9,8,4,6,5,1,2,7,3}] {4,1,3,2,1,3,5,0,7,9} >>832 , >>858 Ruby f = -> ary { e, o = ary.partition(&:even?).map(&:sort) ary.map{|v| v.even? ? v : o.shift} } g = -> ary { e, o = ary.partition(&:even?).map(&:sort) ary.map{|v| v.even? ? e.pop >> 1 : o.shift} } p f[[6, 5, 4, 3, 2, 1]] # => [6, 1, 4, 3, 2, 5] p g[[0, 9, 8, 4, 6, 5, 1, 2, 7, 3]] # => [4, 1, 3, 2, 1, 3, 5, 0, 7, 9] >>856 https://ideone.com/lw7uIj C++。なんか表示位置ずれるなーと思ったら、「()」これ半角じゃねーか。 そのせいで、プログラムが持ってる長さと表示の長さが合わなかった。 しかし、汚くなった無し、思ったより時間がかかってしまった。 >>858 https://ideone.com/7vsaej C++。前のヤツに関数足した。 オーダーが倍になったが改修だとこんなもんだ。 お題: あるフォルダ(例えばC:\Windows)についてフォルダの階層構造を木構造(tree)を表すテキストとして出力せよ。 インデントでもいい。罫線を使ってもいい。 >>858-859 PowerShell $a = 0, 9, 8, 4, 6, 5, 1, 2, 7, 3 $b = 0, 0 $i = 0, 0 $odd = {$_ % 2} $b[0] = @($a |? {!(&$odd)} |% {$_ / 2} | sort -descending) $b[1] = @($a |? {&$odd} | sort) $c = $a |% {$b[(&$odd)][$i[(&$odd)]++]} "入力: [" + ($a -join ", ") + "]" "出力: [" + ($c -join ", ") + "]" Common Lisp >>832 (let* ((l '(6 5 4 3 2 1)) (odds (sort (remove-if-not #'oddp l) #'<))) (mapcar (lambda (x) (if (oddp x) (pop odds) x)) l)) >>858-859 (let* ((l '(0 9 8 4 6 5 1 2 7 3)) (odds (sort (remove-if-not #'oddp l) #'<)) (evens (sort (remove-if-not #'evenp l) #'>))) (mapcar (lambda (x) (if (oddp x) (pop odds) (/ (pop evens) 2))) l)) >>871 Powershell。標準のtreeコマンドと違い、システム/隠しフォルダも表示する。 バージョンによってはプロンプト画面に貼り付けると罫線文字が消えてしまうので、 その場合はps1ファイルに保存して実行するか、PowerShell ISEに貼り付ける。 function MyTree($path, $branch) { if (!$branch) {$path} $dir = @(ls -Force -PSPath $path -EV e -EA SilentlyContinue |? {$_.PSIsContainer}) if ($e) {$branch + "::アクセス不可"} if (!$dir) {return} 0..($last = $dir.Count - 1) |% { $branch + ("├─", "└─")[$_ -eq $last] + $dir[$_].Name MyTree $dir[$_].FullName ($branch + ("│ ", " ")[$_ -eq $last]) } } MyTree "C:\Windows" お題: 平面(0, 0)-(100,100)上に点を100個、配置する。k-means法を用いて点の集合を3つのグループに分け、それらを図示せよ。 >>858-859 Ruby で、 input_ary = [ 0, 9, 8, 4, 6, 5, 1, 2, 7, 3 ] even_ary, odd_ary = input_ary.partition( &:even? ) # 偶数・奇数配列 odd_ary.sort! # 奇数要素をソート # 偶数要素は、2で割って降順ソート even_ary.map! { |num| num / 2 } even_ary.sort! even_ary.reverse! p results = input_ary.map { |num| num.even? ? even_ary.shift : odd_ary.shift } # 偶数・奇数 やっぱり初心者にはまず黒い画面のCUIからやらせたほうがいいな 日本標準時2100に起動し、Web上から文字列「惣流・アスカ・ラングレー」を含む.jpgファイルもしくは.jpegあるいは.pingファイルをC:秘蔵に1GB分保存するコードを教えてください >>893 0 21 * * * sudo less BigWeb | grep アスラン・ザラ > home/C/H_file limit 1GB >>893 firebird -t0:21:0:0 --everyday --query 惣流・アスカ・ラングレー --suffix "jpg|jpeg|ping" --dst "C:\secret" --limit 1GB お題: 3^3^3^... のような反復指数を10の反復指数に近似するプログラムを作成しなさい。 入力されるそれぞれの指数は1より大きい実数とします。 計算後の最も右の指数xは 1<x≦10 としてください。 例: 3^3^3^3^3^3 = 10^10^10^10^10^1.099 2.718^2.718^2.718^2.718^7.705 = 10^10^10^10^2.983 (5.0e+50)^(6.0e+60)^(7.0e+70)^(8.0e+80)^(9.0e+90) = 10^10^10^10^10^10^1.968 1.1^1.1^1.1^1.1^1.1 = 1.112 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる