Pythonのお勉強 Part66

■ このスレッドは過去ログ倉庫に格納されています
2021/11/12(金) 07:48:11.11ID:vp8lzav70
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

〇前スレ〇
Pythonのお勉強 Part65
https://mevius.5ch.net/test/read.cgi/tech/1621749112/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2021/12/13(月) 23:19:20.83ID:lh9CDY7I0
for分のループがよくわからん
2021/12/14(火) 00:12:32.25ID:BYPDUL910
>>>497
https://docs.python.org/ja/3/tutorial/controlflow.html#for-statements
ここのどこでアレってなる?
2021/12/14(火) 02:21:09.13ID:7S3LFIel0
NFTアートが1300万円で落札。VRアーティストせきぐちあいみ「誰もがまだ見ぬ世界を創りたい」

ゴーグルの先に広がるのは、何もない真っ暗な空間。しかし、両手に持ったコントローラーを
振りかざすたびにバーチャルの空間に色が現れ、天地が生まれ、次第に豪華絢爛な異世界が立ち上がる。
その内部は360度から堪能することができ、地を這うことも空を駆けることも自由自在。
VRアーティスト・せきぐちあいみの創作活動は、まさに天地創造だ。
VRと出合ったことで人生が大きく動きだし、今では海外からも注目される存在になった、せきぐち。
VRで人は何を体験できるのか?
そして、彼女のデジタルアート作品に1300万円もの価値をつけたNFTの新たな可能性とは?
2021/12/14(火) 03:06:09.90ID:HCC7MYbd0
創ったやつでどう遊ぶかやな
501デフォルトの名無しさん (JP 0H4f-i5II)
垢版 |
2021/12/14(火) 10:10:15.90ID:DUXpvdCJH
変数名スレと迷ったんだけどpython+tkinter限定の話の気がするのでこっちに…

class App():
__def __init__(self):
____self.app = MyWidgets()
____self.app.mainloop()
____self.app.protocol("WM_DELETE_WINDOW", self.on_close)

__def on_close(self):
____global flg
____app.destroy()
____flg = False

if __name__ == '__main__':
__flg = True
__while flg:
____app()

アプリケーションのリセットを実装するためにこういう書き方を考えたんだけど
1 : 問題ないですよね?
2 : flgの適切な変数名はなんですか?
isAlive? loop?
502デフォルトの名無しさん (JP 0H4f-i5II)
垢版 |
2021/12/14(火) 10:11:31.22ID:DUXpvdCJH
失礼
on_close()内のappはself.appです
2021/12/14(火) 10:26:12.89ID:+EVhZbH90
アンダースコア付けまくる流儀なのかと思った
504デフォルトの名無しさん (ワッチョイ 6736-S64G)
垢版 |
2021/12/14(火) 11:12:22.41ID:0CLeNCku0
class App():
__def __init__(self):
____self.app = MyWidgets()
____self.app.mainloop()
____self.app.protocol("WM_DELETE_WINDOW", self.on_close)

こういうのて全角スペースを使うと見易くなるよ。

class App():
 def __init__(self):
  elf.app = MyWidgets()
  self.app.mainloop()
  self.app.protocol("WM_DELETE_WINDOW", self.on_close)

AAの感覚ねw
2021/12/14(火) 11:21:48.60ID:e0HER7LA0
・のほうがまだ見やすいよ
しかし空白文字を制御に使うなんてどこの誰が考えたんだよ

class App():
・def __init__(self):
・・self.app = MyWidgets()
・・self.app.mainloop()
・・self.app.protocol("WM_DELETE_WINDOW", self.on_close)
2021/12/14(火) 11:23:03.78ID:lIRTHhOV0
2021年になってもコード貼り付けられない掲示板
2021/12/14(火) 11:37:10.44ID:Or5YSda6a
コードがじかに張り付けられて
その場で実行されても困るからな
2021/12/14(火) 11:39:30.28ID:+EVhZbH90
普通は全角スペース使うな
そしてそのまま貼り付けてエラーになる

pythonもスペースとTABの他に全角スペースもインデントに許可してくれればいいのに
2021/12/14(火) 11:59:00.43ID:1bs/ZtcG0
どう考えてもこの掲示板がヤバイのにPythonが悪いって発想になる人が一定数いる辺りプロジェクトの破綻ってのは人類がいる限り絶対に避けられないんだろうな

Pythonに型定義が必要だと思ってるとかも...
2021/12/14(火) 12:04:36.90ID:+EVhZbH90
変数名に全角文字も使えるけど、全角スペースは使えないんだよな
だから、pythonも全角スペースをスペースの一種だとは思ってる
strip()でも削除される
でもインデントには使えない
2021/12/14(火) 12:23:23.14ID:1PoShsV10
>>501
Appクラスにstart, stop, restartメソッドを実装して使い分ければmainにflgやwhileは必要なくなる

現状のループ実装ならflgの名前はshould_restartとかかな
ただrestartするのがデフォルトの動きなら真偽を逆にしてshould_exitとかにしたほうが意図が伝わりやすい
2021/12/14(火) 12:25:50.36ID:W8qbVS9SM
じゃあ全角予約語や全角数値リテラルもよろしく
2021/12/14(火) 12:27:24.63ID:VQ9CDzMD0
どう考えてもこの掲示板がコード貼り付けにむいてないだけなのにこの掲示板の機能が悪いって発想になる人が一定数いる辺りプロジェクトの破綻ってのは人類がいる限り絶対に避けられないんだろうな
2021/12/14(火) 12:48:14.80ID:+EVhZbH90
この掲示板というより、htmlが連続スペースを無視する仕様を引きずってるんでしょ
ブラウザでやればどこでもそうなる
2021/12/14(火) 12:55:35.00ID:vLIDlmgW0
5ch は、命令によって表示を変えられる掲示板で、
単に文字列として表示しているだけの掲示板じゃない

色々な命令を受け付けるから、危険な命令を書き込めないようにしている
516デフォルトの名無しさん (ワッチョイ 872c-p36F)
垢版 |
2021/12/14(火) 13:00:57.82ID:6KyJPdov0
>>511
import tkinter as tk

class App():
__def start(self):
____self.root = tk.Tk()
____self.btn_1 = tk.Button(self.root, text='stop', width=10, command=self.stop).pack()
____self.btn_2 = tk.Button(self.root, text='reset', width=10, command=self.reset).pack()
____self.root.protocol('WM_DELETE_WINDOW', self.stop)
____self.root.mainloop()

__def stop(self):
____self.root.destroy()

__def reset(self):
____self.root.destroy()
____self.start()

app = App()
app.start()

こういう感じですかね
init経由しないの初めてなのでリセット時にきちんと初期化できてるのか不安
2021/12/14(火) 13:08:39.77ID:+EVhZbH90
Tk使うと途端に思考がイベントドリブンになるんだよな

コンソールに出力してちらつくのが嫌だから、
単に表示用のウィンドウが欲しいだけなのに、
実行開始ボタンみたいなのを追加した方がスムーズに作れる
2021/12/14(火) 13:22:01.69ID:ukp+dl0i0
Unicode的に全角空白含めホワイトスペース(混在不可)でインデントできてもいい気がするが
HTMLで連続する全角空白がそのまま描画されるのはバグ
2021/12/14(火) 13:30:18.23ID:1bs/ZtcG0
めっちゃ効いてて草
520デフォルトの名無しさん (ワッチョイ 6736-S64G)
垢版 |
2021/12/14(火) 13:44:53.68ID:0CLeNCku0
Tkか。
perlで使ってたな。
で、本格的なGUIを作りたくてQtに移行した。でもperl/Qtの使いにくさは異常ww

pythonに移ったらQtとの相性が抜群で驚いた。
本格的にGUIを使うならQtがいいと思う。少なくともTkはダメだな。

python/tkの現在のレベルがどの程度がしらんけどw
2021/12/14(火) 14:16:08.35ID:+EVhZbH90
手軽にGUI化したいか、ちゃんとやりたいかだよな

同じモジュールで簡単に作れるし凝ったものも作れるといいけど、
どちらかに特化してるので結局いろいろ手を出すことになる
2021/12/14(火) 17:36:00.21ID:EGYSSl+K
おれはpythonのGUIは全部webアプリに作り直したわ
個人でやる分にはwebアプリの方が使い勝手が良いというところに帰結した
一番の理由は仮想環境で安定して完結出来る、すぐにデプロイできるという点だったかな
(まぁその考えもまた変わるかもしれないけど)

GUIで作ってた頃はPySimpleGUIってライブラリがめちゃ直感的で使いやすかったな
2021/12/14(火) 17:39:17.97ID:EGYSSl+K
ライブラリというかフレームワークだった
他に何か補助的なライブラリをインストールするとかは必要なく
pysimpleguiだけでほとんどできた記憶
2021/12/14(火) 17:46:18.30ID:gY9N+5Mqa
人名の、外字をreportlabでPDFに出力したいのだけど、□になってしまいます。
PDFにフォント埋め込んで表示させる事はできないのでしょうか?
ちなみにエクセルからPDFに書き出すとちゃんと表示させる。
2021/12/14(火) 17:56:05.21ID:+EVhZbH90
特定の文字種だけ読めなくなってるpdfとかたまに見るな
あれは実は作った本人は読めてるのかもしれない
つまり、pdf自体は正しくて表示する側の問題かもしれない
2021/12/14(火) 19:02:21.60ID:Wlu2x8+4D
外字フォントを埋め込んでないから
2021/12/14(火) 19:07:15.88ID:3xSGx3Cz0
report labでどうやって外字埋め込むの?
2021/12/14(火) 19:34:38.23ID:ukp+dl0i0
埋め込んだフォントに外字が含まれているかどうかの話で
使う側は関係なくない?しらんけど
2021/12/14(火) 19:38:00.75ID:+EVhZbH90
そう思うんだけど、まともに読めないようなものを公開すると思えないんだよな
2021/12/14(火) 19:57:14.83ID:J7XSbp4E0
イメージにしてしまおう
2021/12/14(火) 21:32:31.59ID:Il/nsfIC0
PDFの文字コードはUnicodeじゃなくて独自だった記憶
2021/12/14(火) 21:54:50.72ID:3xSGx3Cz0
自作外字でも、エクセルからPDF書き出ししたらちゃんと見ることが出来るんだわ。windows10のエクセルで書き出したPDFがMacでちゃんと外字も見れるので出来るはずなんだ。
で、それをreportlabでやりたいんだけどやり方が分からんのです。
2021/12/14(火) 21:55:38.65ID:Ae5z0mHZ0
fx-CG50

full pythonでpytorchでも動くようになったら
いいのになぁ
2021/12/15(水) 12:50:56.44ID:lDA2oINn0
>>532

こういう話ではないのですのん?
https://gammasoft.jp/blog/pdf-japanese-font-by-python/
2021/12/15(水) 13:08:06.22ID:XQabx2r27
>>534
これはできる。
ただ、表示する文字列に自作外字が入ると□になる。
なので、pdfに外字の情報を埋め込まなきゃいけないと思うのだけど、やり方が分からないのです。
誰か教えて下さい。
2021/12/15(水) 13:46:40.32ID:N5WUcAXN0
外字の含まれるフォントファイルを読み込んでないんじゃないの、ということだと思うけど
2021/12/15(水) 14:18:04.11ID:0wo19brQ0
Jupyter Notebookに本のサンプルプログラムを
表示させたとき
in ソース
out 処理結果
って表示させられるんですけど
in ソースの部分だけを抜き出したくて困ってます
その部分だけ選択してコピペするには手間がかかります

質問なんですが
Jupyter Notebookで
out の部分を非表示にするいい方法ないですかね?
2021/12/15(水) 14:19:11.58ID:0wo19brQ0
複数in out があるので一気にです
2021/12/15(水) 14:32:36.32ID:NuYoj3Sh7
>>536
えーと、windowsの場合、EUDC.TTEとEUDC.EUFの二つのファイルがシステム標準の外字となっており、すべてのフォントにリンクできます。ですので、MS明朝でも、MSゴシック
でも同じ外字が出力されます。
ので、MS明朝をベースにして作った外字をMSゴシックで表示させると、外字だけ明朝っぽい表示になりその他はゴシックに
なります。
要するに外字のデータはフォントファイルに保存されているのではなくて、別ファイルからリンクが張られているのです。
なお、フォント個別に外字ファイルを作成して個別にリンクさせることもできますが、そっちをreportlabでやってもダメでした。
ExcelからPDF吐いたらちゃんと埋め込まれるのに・・・。
誰か教えて。
2021/12/15(水) 14:57:32.78ID:XLng8AET0
そこまで切り分けできてるんなら
reportlab-users
で聞いてみたら
2021/12/15(水) 15:41:40.80ID:hectGEVQ0
ここは?
https://www.blog.pythonlibrary.org/2013/07/19/reportlab-all-about-fonts/
2021/12/15(水) 16:42:33.36ID:4urMZ+Lwa
フォントを埋め込むのが前提のライブラリなんじゃない?
2021/12/16(木) 18:00:48.64ID:KcTXiqly0
いきなり書き始める段階を脱して、def main(): から書き始めるようになったぜ
2021/12/16(木) 22:09:25.20ID:egELuPRfd
おめでとう
2021/12/16(木) 22:32:14.19ID:KcTXiqly0
main()の呼び出し側を書くの忘れて、エラーは出ないけど処理もされなくてびびった
2021/12/16(木) 22:56:57.17ID:80W3ywqF0
おめでとう
2021/12/16(木) 23:03:54.00ID:S4I2Uas6M
おめでとう!
2021/12/16(木) 23:22:11.35ID:ufzc6HJ10
>>539
予め決められた標準フォント以外は埋め込むPDF規格が
PDF/x-1a
ISO 15930
です。
印刷業界でよく使われてます
reportlabがサポートしてるか調べてみて

まあghostscriptで簡単に変換できますが
2021/12/17(金) 05:12:55.31ID:JVmT4SX30
読み込む=埋め込む、として読んでたけど、
確かに別ファイルとして参照させてるだけみたいにも読めるな
だとしたら原因はそれ
2021/12/17(金) 16:56:27.27ID:JVmT4SX30
秀丸の色をqiitaみたいにする設定ファイル無い?
2021/12/18(土) 13:32:01.19ID:sE6UQAC00
>>550
それ有ったら自分も欲しい
2021/12/19(日) 00:25:09.02ID:CCxV8vx00
書く方は手数へって良さそうだけど読む方は一行で悩みそうな言語だなあ
2021/12/19(日) 07:39:26.57ID:ccGltiMB0
むしろ行数増えると思うけど
Sparse is better than dense
2021/12/19(日) 08:52:25.86ID:ccGltiMB0
pandasでtableを読み込んで、それぞれの要素に張られているリンク先を取得するにはどうすれば
555デフォルトの名無しさん (ブーイモ MM17-QNbc)
垢版 |
2021/12/20(月) 11:23:14.07ID:sxGOmJ2JM
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
2021/12/20(月) 11:26:03.62ID:99Jhq6w50
↑何があったか知らんけど、この人なんでこんなに悔しがってんの?病人?
2021/12/20(月) 14:14:55.57ID:sn5XhEky0
BeautifulSoupでスクレイピングしようとしてるけど、全然楽にならない
素性のいいhtmlからさっくり持ってくるなら簡単に書けるけど、
そういうのはベタで書いても楽

素性の悪いhtmlから複雑なことしようと思うと、小回り効かなくて何も使わずに書くしかない
楽になるケースが無い
2021/12/20(月) 14:48:43.96ID:dr5rkOZYM
スクレイピングだけならJavaScriptをはじめとした他の言語で書いた方が数倍楽
2021/12/20(月) 15:25:46.48ID:sn5XhEky0
対象がごちゃごちゃしてて、やりたいことも単純じゃないなら、
どの言語で書いても簡単には行かないと思うな

htmlでやれることが多すぎるので、その中からよくあるやりたい事を選んでも、
大抵はそれでカバーできない
2021/12/20(月) 15:28:28.68ID:wokM+j500
どんな言語でも人のコードを解析するのは難しいもんな
自分はあんまりやらないからVBAで済ませちゃうことが多い
2021/12/20(月) 17:13:58.90ID:sn5XhEky0
d = {}
print(d['a'])
これは当然エラー

from collections import defaultdict
d = defaultdict(dict)
print(d['a'])
これならok

print(d['a']['b'])
でもこれはエラー

d = defaultdict(lambda: defaultdict(dict))
こうしておくとエラーにならない

print(d['a']['b']['c'])
でもこれはエラー

なかなかperlみたいには行かない
2021/12/20(月) 17:32:04.57ID:Hn2u2l7mM
>>561
>>403で書いたけどどうしてもPythonでやりたいならglomみたいなライブラリを使うか自分でヘルパー関数を作るかになる

glom(d, 'a.b.c', default=None)
563デフォルトの名無しさん (ワッチョイ 4a36-qxFW)
垢版 |
2021/12/20(月) 18:49:40.73ID:S8OedEgF0
buf = {}
buf['a'] = []
buf['a'].append(10)
buf['a'].append(20)

え、これいいの? って思うんだけど通るんだよねw
2021/12/20(月) 19:17:12.28ID:pmkgh/YZ0
何の不思議もないだろう
2021/12/20(月) 19:21:32.24ID:snB/Zb70d
不思議と思うポイントはどんなとこ?
566デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/20(月) 19:43:53.41ID:ceMzU2Ib0
圏論で言えばAUTOだから、良いのかな??って。
567デフォルトの名無しさん (ワッチョイ 4a36-qxFW)
垢版 |
2021/12/20(月) 20:09:27.72ID:S8OedEgF0
そうかw
Cから入った自分は、え、これは無理だろ。って感じてしまうw

list = []
list.append(10)
list.append(20)
buf['a'] = list

なら納得いくが。
まあ、最近は昔ほど抵抗は無くなったがw
2021/12/20(月) 20:24:35.62ID:sn5XhEky0
何が違うのか判らん
569デフォルトの名無しさん (ワッチョイ 4f33-g56a)
垢版 |
2021/12/20(月) 20:39:54.46ID:4NByXHes0
Cから入ると組み込み関数名を変数に使うことに抵抗なくなる?
それとも>>567が特殊なの?
2021/12/20(月) 20:50:17.97ID:sn5XhEky0
i = 1
といきなり書いてokなんだから、
d['a'] = 1
a[1] = 1
もいいやろと思うんだけど
571デフォルトの名無しさん (ワッチョイ 4a36-qxFW)
垢版 |
2021/12/20(月) 21:03:52.20ID:S8OedEgF0
数値はいいとして、普通はアドレスが格納されるから
list配列に値をいれて、そのlistのアドレスをdictに格納する。ってのが手順だよね。

まあ、いいか。気にしないでww
2021/12/20(月) 21:23:50.21ID:sn5XhEky0
宣言が必要と思うのは、入れ物を用意しないとと思うからで、
int i
と書くと整数の入れ物が、
float i
と書くと実数の入れ物が用意される

でもpythonは、いきなり
i = 1
と書くと整数が入るし、
i = 'abc'
だと文字列が入る

自由すぎやろと
何かの哲学に違反してねえかと

実際には、オブジェクトの入れ物でしか無いから、中身は何でもいいんだよな
2021/12/20(月) 21:25:46.04ID:EghhPRvN0
たまにnewしたくなるときがなくもない
実際したところでだから何が巻き起こるだけだけど
2021/12/20(月) 21:27:19.10ID:EWzfdFH+0
加齢臭がハンパないスレですね
575デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/20(月) 21:41:02.13ID:ceMzU2Ib0
カレーの匂い。
576デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/20(月) 21:47:39.96ID:ceMzU2Ib0
カレー味のウンコの匂い。
2021/12/20(月) 21:59:32.19ID:nWR8HCa10
>>572
void *a=new 10;
void *b=new 0.0;
void *c=new "abc";

Cだとこんな感じじゃねえの?
2021/12/20(月) 22:02:58.91ID:WrxYXVvN0
C言語にnewはない
579デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 22:08:39.93ID:LaroeVvp0
アルゴリズムの問題で解けないやつがあるんですが、ここで聞くのはスレチですか?
2021/12/20(月) 22:11:35.11ID:dz5/LnJn0
C++と思えば?
2021/12/20(月) 22:12:58.25ID:WrxYXVvN0
似てるけど別のもの
コンパイルが通らない
2021/12/20(月) 22:14:19.44ID:WrxYXVvN0
>>579
Python限定のお題になるなら構わないのでは無いかな?
お勉強スレだし
583デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 22:16:38.83ID:LaroeVvp0
Pythonの解くことを前提に与えられた問題なのですが、多分Python以外でも解けると思います。
一応投下させてください。
[問題]
n人の人間の身長が与えられる。
このn人を1列に並ばせるとき、「各々の人間において、自分より身長が高い人間が自分より前に1人以下である」という条件を課した際に、並び方は何通りあるか求めよ。
ただし、同じ身長の人間が複数人いるものとする。

方針だけでもいいので、教えて頂けると幸いです。
2021/12/20(月) 22:16:52.26ID:dz5/LnJn0
組み込みじゃないパソコン向けは++だよ。
2021/12/20(月) 22:16:52.71ID:EghhPRvN0
>>579
基本的にテスト問題は外部に漏らすのNGだから
サイトの規約をちゃんと守ってくれな
586デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 22:20:53.13ID:LaroeVvp0
>>585
友人から相談された問題なのですが、確かにテスト問題の可能性がありますね。
確認しておきます。
2021/12/20(月) 22:23:58.82ID:sn5XhEky0
前に0人ならばただのソートなので1通り+同じ身長同士の入れ替えの組み合わせ
それを1人限定で崩していいので、崩し方のパターンだけ増やす
588デフォルトの名無しさん (ワッチョイ ea55-MOPJ)
垢版 |
2021/12/20(月) 22:29:28.14ID:2brWBIvz0
>>583

>ただし、同じ身長の人間が複数人いるものとする。

この条件はどう効いてくるのでしょうか?
n 人の身長を h_1, …, h_n とするとき、 #{h_1, …, h_n} = n となる場合をなぜ除外しているのか?
589デフォルトの名無しさん (ワッチョイ ea55-MOPJ)
垢版 |
2021/12/20(月) 22:32:40.36ID:2brWBIvz0
もちろん、この問題は速いアルゴリズムじゃないと駄目なんですよね?
590デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 22:33:02.10ID:LaroeVvp0
>>587
151, 150, 153, 152 …(cm 略)
の並び方も考えられるので、ソートを崩していいのは1人限定とは限らないと考えました
591デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 22:34:52.54ID:LaroeVvp0
>>588
分からないです…
少し問題が複雑になるんですかね?
592デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 22:36:20.06ID:LaroeVvp0
>>589
速さに関する制約はないと思いますが、流石に全並びを考えてカウントするのは違う気がします
2021/12/20(月) 22:56:10.96ID:sn5XhEky0
なるほど
ざっくりソートされてれば細かい部分で無数に違反してていいのか
151 150 153 152 153
でもokなので、同じ身長を1つに縮退させることがそもそも無理

これは、とりあえず片端からやってみて、違反したらバックトラックして、
みたいに数えていくしかないのでは
594デフォルトの名無しさん (ワッチョイ b3ad-j66Y)
垢版 |
2021/12/20(月) 23:12:03.13ID:LaroeVvp0
>>593
やっぱり、ほぼ全通り考えるしかないんですかね…

あと関係ないですけどアルゴリズムの世界でも縮退って言葉使うんですね笑
2021/12/20(月) 23:28:55.61ID:nWR8HCa10
数学問題やね

まず同じ身長の奴がいない場合の並び方はA(N)通りとすると
A(1)=1
A(2)=2=2^1
A(3)=4=2^2
A(4)=8=2^3
...
A(N)=2^N通り

同じ身長の奴がいる場合はちょっと複雑
これをB(N)通りとすると
N人の中に150cmが3人いる場合
B(N)=A(N-2)*(3*2)
N人の中に150cmが3人と152cmが2人
B(N)=A(N-3)*(3*2)*(2)
2021/12/20(月) 23:37:02.50ID:nWR8HCa10
訂正:A(N)=2^(N-1)

A(N)=A(N-1)*2となることを証明すればいい
2021/12/20(月) 23:54:28.57ID:2rYNI2GJ0
分割統治でやって欲しいんじゃないの

ソート済みの状態から一番高い身長のやつをピボットにして左半分と右半分の問題に分割
右半分は同じ身長のみ入れ替え可能
左半分は一番高い身長のやつをピボットにしてさら左半分と右半分の問題に分割
左半分が1人になったらピボットの位置を移動させる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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