はてなキーワード: subとは
知ってる人いてうれしい。(>×∠)
頭おかしいよな
🦐🦐🦐🦐🦐🦐🦐🦐🦐
気が付くと朝4時になっていた。
なんか動くところまで出来たので貼っておく。
import pdfplumber import re #クリーンアップ def cleanuptext(text): #決算書の合計値を太字にしたことでpdfplumberが暴走するケースへの対処 #例 流動資産 -> 流流流流流動動動動動資資資資資産産産産産 #誤爆が怖いので、これが起きている時だけ補正します if "流流流流流動動動動動資資資資資産産産産産" in text: text = re.sub(r'(.)92;1{4,}', r'92;1', text) #△をマイナスに。 数字中のカンマを消して結合する text = re.sub(r'△([0-9])', r'-92;1', text) text = re.sub(r'▲([0-9])', r'-92;1', text) text = re.sub(r'([0-9]),([0-9])', r'92;192;2', text) #たまに、煽り屋みたいに文字の後にスペースが入る嫌がらせを修正する #例: 投 資 有 価 証 券 -> 投資有価証券 text = re.sub(r'(?<=[92;u4E00-92;u9FFF92;u3040-92;u30FF])92;s(?=[92;u4E00-92;u9FFF92;u3040-92;u30FF])', '', text) return text #今期の勘定科目の数字を取得 def get_AccountName(text, need): pattern = rf'^{need} -?[0-9]+ (-?[0-9]+)' r = re.search(pattern, text, re.MULTILINE) if r is not None: return float(r[1]) return 0 #清原ネットキャッシュを計算する。 def calc_KiyoharaNetCash(text): total_current_assets = get_AccountName(text,'流動資産合計') if total_current_assets == 0: #要約財政状態計算書しか公開していない、楽天のような素敵な会社様への対処 total_assets = get_AccountName(text,'資産合計') if total_assets != 0: #とりあえず、資産の部の6割を流動資産とみなす total_current_assets = total_assets * 0.6 else: #流動資産合計ではなく、流動資産という単語を使っている我が道を行く東北電力への対処 total_current_assets = get_AccountName(text,'流動資産') if total_current_assets == 0: raise Exception("流動資産合計の勘定科目が見つかりませんでした。"+text) total_liabilities = get_AccountName(text,'負債合計') if total_liabilities == 0: #負債合計ではなく、負債の部合計に拘るオムロンの嬉しい決算書への対策。なんでや・・・ total_liabilities = get_AccountName(text,'負債の部合計') if total_liabilities == 0: raise Exception("負債合計の勘定科目が見つかりませんでした。"+text) #負債をご丁寧にマイナス表記で書いてくれる中外製薬の親切な決算書への対策。いい加減にしろよ・・・ if total_liabilities < 0: total_liabilities = total_liabilities * -1 #投資有価証券はないこともあるので、0を容認する marketable_securities = get_AccountName(text,'投資有価証券') #print(total_current_assets,marketable_securities,total_liabilities) netcash = total_current_assets + (marketable_securities*0.7) - total_liabilities #たまに単位を1000円にしている銘柄があるので補正する if is_tanni_senyen(text): netcash = netcash / 1000 return netcash # "流動資産合計" と "負債合計" の間に "単位:千円" があるかをチェック def is_tanni_senyen(text): if "単位:千円" in text: return True if "単位: 千円" in text: return True if "単位 : 千円" in text: return True if "単位 :千円" in text: return True return False def pdf_to_kiyohara_netcash(pdfpath): with pdfplumber.open(pdfpath) as pdf: text = ''.join(page.extract_text() for page in pdf.pages) text = cleanuptext(text) #print(text) kiyohara_netcash = calc_KiyoharaNetCash(text) #print(kiyohara_netcash) return kiyohara_netcash def mymain(): import sys args = sys.argv argc = len(args) if argc <= 1: print(''' これは、清原達郎氏のネットキャッシュ比率(以下、清原ネットキャッシュ比率)を決算短信のpdfから求めるソフトです。 清原ネットキャッシュ=流動資産合計+(投資有価証券*0.7)-負債合計 清原ネットキャッシュ比率=清原ネットキャッシュ/時価総額*100 遊び方 1. 決算短信pdfから清原ネットキャッシュを求める python calc_kiyohara_netcash.py 140120240514594985.pdf 結果: 30757.0 決算書には、100万円単位で数字が書かれているはずなので、この数字の単位は100万円です。 つまり、3075700万円。 2. 時価総額を億円単位で追加することで、清原ネットキャッシュ比率を求める 時価総額が146億円なら146と書いてください。 python calc_kiyohara_netcash.py 140120240514594985.pdf 146 結果: 210.66% このコードはNYSLライセンスです。無保証、自己責任ですが、ご自由に。 かぶ探とかとつなげるといいかもね。 ''') return if argc <= 2: kiyohara_netcash = pdf_to_kiyohara_netcash(args[1]) print(kiyohara_netcash) return if argc <= 3: market_cap=float(args[2])*100 #億円から百万円表記に kiyohara_netcash = pdf_to_kiyohara_netcash(args[1]) ratio = round(kiyohara_netcash/market_cap*100,2) print(f"{ratio}%") return if __name__ == '__main__': mymain()
市民ミュージカルに
♪ようこそ♪
〜出演者〜 オイラもみんなのことだーいすきでゲソ かるさりかんに こっくん KKO トランス女性
なるほど確かにその通りですね。
ブックマーク先に寄生する形でしか意見を述べられない卑しい存在であるにもかかわらず、増田ことはてな匿名ダイアリーの方々に上から目線で一方的に批判をして申し訳ございませんでした。
その方法として、古来中国から伝わる三跪九叩頭の礼を致します。
冗長な記述を避けるために、VB.NETで表記させていただきます。
Imports System
Public Class SanGuiKiuKouTou
Sub Main()
For i As Integer = 1 To 3
Console.WriteLine("跪")
For j As Integer = 1 To 3
Console.WriteLine("起")
Console.WriteLine("起立")
End Sub
End Class
御清聴の程有難く存じます。
気になったので調べてみた。
ひらがな | 漢字 | 対応する英語 | 圧縮倍率 |
あ | 亜 | sub | 3倍 |
い | 胃 | stomach | 7倍 |
う | 鵜 | cormorant | 9倍 |
え | 絵 | picture | 7倍 |
お | 尾 | tail | 4倍 |
か | 蚊 | mosquito | 8倍 |
き | 木 | wood | 4倍 |
く | 苦 | pain | 4倍 |
け | 毛 | hair | 4倍 |
こ | 粉 | powder | 6倍 |
さ | 差 | difference | 10倍 |
し | 師 | teacher | 7倍 |
す | 酢 | vinegar | 7倍 |
せ | 背 | back | 4倍 |
そ | 祖 | ancestor | 8倍 |
た | 多 | many | 4倍 |
ち | 地 | ground | 6倍 |
つ | 津 | harbour | 7倍 |
て | 手 | hand | 4倍 |
と | 都 | capital | 7倍 |
な | 菜 | vegetable | 9倍 |
に | 荷 | load | 4倍 |
ぬ | 奴 | guy | 3倍 |
ね | 根 | root | 4倍 |
の | 野 | field | 5倍 |
は | 葉 | leave | 5倍 |
ChatGPTに日本語で命令したら秒で作ってくれるのでVBAやGAS書く能力は不要になったんだが。「A1からI9に数独の初期値入れてあるシートの残りのマス埋めるVBAマクロ作って」の一言で数独解くの作ってくれるぞ
ChatGPTが補足している通りロジックは基本しか使っていないので初期値から最終形までに仮定して入れる局面があるものは解けないし非効率ではあるものの初級は解けるし遅いPCでも一瞬で終わる。必要なのは入力の形と欲しい出力を日本語にする能力とHello World実行できるレベルの知識。コード読んでデバッグできる能力があればなおよいがGPTに教えてもらえばいいし、今業務やってる派遣の人に動作確認してもらって不満なところをAIに修正させればよいので業務をよく分かっている社員にやらせたほうが会社としてはいい戦略。
A1からI9に数独の初期値入れてあるシートの残りのマス埋めるVBAマクロ作って
数独を解くためのVBAマクロを作成するのは複雑ですが、以下は一つの例です。このマクロはシートのA1からI9の範囲の数独を解きます。
Function IsPossible(y, x, n, grid) As Boolean Dim i As Integer Dim j As Integer ' 同じ行や列にnが既にあるか確認 For i = 1 To 9 If grid(y, i) = n Or grid(i, x) = n Then IsPossible = False Exit Function End If Next i ' 3x3のボックス内にnが既にあるか確認 Dim x0 As Integer: x0 = ((x - 1) ¥ 3) * 3 Dim y0 As Integer: y0 = ((y - 1) ¥ 3) * 3 For i = 0 To 2 For j = 0 To 2 If grid(y0 + i + 1, x0 + j + 1) = n Then IsPossible = False Exit Function End If Next j Next i IsPossible = True End Function Sub SolveSudoku() Dim grid(1 To 9, 1 To 9) As Integer Dim i As Integer Dim j As Integer ' グリッドをシートから読み込む For i = 1 To 9 For j = 1 To 9 grid(i, j) = Cells(i, j).Value Next j Next i If Solve(grid) Then ' 解をシートに書き出す For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = grid(i, j) Next j Next i Else MsgBox "解けませんでした" End If End Sub Function Solve(ByRef grid) As Boolean Dim i As Integer Dim j As Integer Dim n As Integer For i = 1 To 9 For j = 1 To 9 If grid(i, j) = 0 Then For n = 1 To 9 If IsPossible(i, j, n, grid) Then grid(i, j) = n If Solve(grid) Then Solve = True Exit Function End If grid(i, j) = 0 End If Next n Solve = False Exit Function End If Next j Next i Solve = True End Function
このコードをVBAのモジュールに追加して、シートに数独の初期値を入力してからSolveSudokuマクロを実行すると、マスを埋めることができます。
ただし、このコードは基本的なバックトラック法を使用しており、非常に複雑な数独には効率的ではない場合があります。より高速な解法や最適化を求める場合は、追加の手法やアプローチが必要です。
https://si-coding.net/sudoku4.html
2 3 5 7 8 3 3 4 5 1 6 6 1 2 4 4 9 8 2 2 5 1 3 9 4 6 1 4 1 2 6
1 6 9 2 3 5 8 4 7 4 5 8 1 6 7 9 3 2 3 2 7 9 8 4 5 1 6 5 3 6 7 1 2 4 9 8 7 1 4 3 9 8 6 2 5 9 8 2 5 4 6 1 7 3 6 9 1 8 2 3 7 5 4 2 4 5 6 7 9 3 8 1 8 7 3 4 5 1 2 6 9
画面下側、ちょうどWindows10のタスクバーの高さ分のところが、数秒おきに縞々の横線が入る、正常に戻るを繰り返すようになった。
横線が入るとアイコンは見づらいし、時刻の文字はほぼ判別不可。
何より数秒おきに横線が出たり消えたりするので、画面端とは言えチカチカして目障り。
D-subからの入力とHDMIからの入力、メインのデスクトップPCとサブのノートPCどの組み合わせでも発生するので、完全にディスプレイの表示部分が壊れたな。
Amazonで買ったディスプレイなので購入履歴を見てみると5年半前に買ったものだった。
1万円代だったから、まあ元は取れただろう。
ネットで調べられないとやっぱ本がないとな。
自分は本での独学苦手だったのでひたすらネット検索してる。買った本は最初の方しか読んでない。
あとは『マクロの記録』で1動作(例えばセル選択、例えばコピペ、例えば置換)を記録して、記録されたファイルを読む
それをアレンジしてみる
F8で1行ずつ実行してみる
よりスゲーアレンジをするにはどうしたらいいか本かネットで調べる
という流れでワイは学びました
これだと「知ってることしかできない」けど、知ってることもできないのに知らないことに手を出すのは早いしね
できること増やしたいと思ったら本見る、具体的に作りたいものあったらネットで検索してメモ帳やSlackの自分DMや紙(印刷)に保存
あるゲームに、武器に漢字8文字の名前を付けると必殺(クリティカル)率が上がるっていうキャラがいるので漢字8文字の武器の名前を考えることになった。
そのキャラが使うのは主に剣か魔法(書)だが別に職業によってどうとでも。好きな言葉は漆黒。
意外に8文字は長い。前に二つ名や流派の名前などを付けるとやりやすい。
ところで、このゲームには金鵄武者という職業があるのに、武器の名前に鵄の字が使えないんだよね。金鵄武者用の武器の名前を付けられないじゃん。