「false」を含む日記 RSS

はてなキーワード: falseとは

2023-09-27

オブジェクト指向で学ぶ人生

Microsoft本社入り口に貼ってあるらしいコード

時は金なりという意味か?

    public class Person {
        BasicInfo info;
        float stock;
        float Value;
        public string Name(bool isSpy){
            return isSpy ? info.Name : info.Name.ToSecondName();
        }
        public string Sex(bool isNormal){
            return isNormal == info.isMan ? "Man" : "Woman";
        }
        public float Earn(bool isExtra = false){
            float sexPad = info.isMan ? 1f : 0.5f;
            float racePad = info.isWhite ? 1f : 0.5f;
            var delta = DateTime.Now - info.Birth;
            int age = (int)(delta.TotalDays / 365);
            float result = Value * sexPad * racePad * age;
            if(isExtra){
                Value += result;
            }
            return result;
        }
        enum Race{
            White, Black, Yellow
        };
        class BasicInfo{
            public string Name;
            public int NationalId;
            public bool isWhite;
            public bool isMan;
            public DateTime Birth;
            public BasicInfo(string Name, int NationalId, Race race, bool isMan){
                this.Name = Name;
                this.NationalId = NationalId;
                this.isWhite = race == Race.White;
                this.isMan = isMan;
                Birth = DateTime.Now;
            }
        }

2023-09-19

入力と欲しい出力を言語化する能力があればマクロ書く能力不要

anond:20230919002911

ChatGPT日本語命令したら秒で作ってくれるのでVBAGAS書く能力不要になったんだが。「A1からI9に数独の初期値入れてあるシートの残りのマス埋めるVBAマクロ作って」の一言数独解くの作ってくれるぞ

ChatGPTが補足している通りロジックは基本しか使っていないので初期値から最終形までに仮定して入れる局面があるものは解けないし非効率ではあるものの初級は解けるし遅いPCでも一瞬で終わる。必要なのは入力の形と欲しい出力を日本語にする能力Hello World実行できるレベル知識コード読んでデバッグできる能力があればなおよいがGPTに教えてもらえばいいし、今業務やってる派遣の人に動作確認してもらって不満なところをAI修正させればよいので業務をよく分かっている社員やらせたほうが会社としてはい戦略

プロンプト

A1からI9に数独の初期値入れてあるシートの残りのマス埋めるVBAマクロ作って

ChatGPT(4.0)の答

数独を解くための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

2023-09-14

anond:20230912195121

下記の文章は誤り。

元の理論が間違いであ可能性、元の命題が偽である可能性を反証可能性と言います

反証可能性とは、理論が偽である可能性(≒理論が偽である確率)を意味するのではなく、「誤りをチェックできるということ」を意味します。

反証可能性(falsifiability) が falseとability という単語で作られていることから類推できますが、何らかの方法で「否定できること」が反証可能性

下記のような書き方であれば問題なかった。

元の理論が間違いであると反証される可能性があるか、元の命題が偽である反証される可能性があるかを反証可能性と言います

単なる書き間違いなんだとは思うけど、文字通りに解釈する人がいるかもしれないので、気をつけて発信してください。

2023-08-24

anond:20230824220236

数学素養がないとクソみたいなコードを書いていることにすら気が付かないからな。

例えば、このツイートに対して「false」「要件による」と答えている人はちょっと危ない。

https://twitter.com/fumieval/status/1663161595009314819/retweets/with_comments

些細なことかと思うかもしれないけど、この小さな積み重ねで大きな認知コストを発生させるから、少なくとも理系大学は出てないと話にならないと思う。

2023-08-23

転売ヤーと「安いことが正義」という価値観名誉価格

日本社会には「良いものを安く売ることが良いことだ」ということを美徳だと感じている人たちが多いと思う。

しかし良いものを安く売ることは、その良さを減じている。良いものとは高いのである。良質なものは珍しいことが多く、手に入らないから高いのだ。

良いものを作り安く売ることで、作り手には何が入るのか。名誉である

良いものを安く売ることで「あの人はいい人だ」「できた人だ」「立派な人だ」という称賛を浴びることができる。

逆に、買い手はその安さのかわりに称賛を売っているのだ。

もし良いもの価格に十分見合ったものだったらどうだろう。買い手は「こんなものか」「そういうものだろう」「なぜ感謝しなければならない」「正当な対価である」と感じるのだ。称賛などしない。

「良いものなのに安くする」というのは、自信の無さの裏返しである。高い値をつけたとき罵倒に耐えきれないから、その自信の無さが値段に出るのだ。

「でもみんなに提供するためにこんな低価格でやっているんです」と言えばみな納得する。「そんなに安いならしょうがない」「こんなに安いのにうまい」「こんなに安いのに高品質だ」という評価になる。

その頑張り、その苦心がいっとう評価される。買い手は安くものが手に入って満足する。素晴らしく理想的物語である

しかし良いものとは高くなるべきなのである本来もっと価値があってしかるべきである。そういう売り手と買い手だけが存在する一商品クローズド市場ではなく、世の中には別の市場もある。世界とは魑魅魍魎跋扈する極めて不安定世界であり、小さなクローズド世界とは性質が完全に異なる。その別の市場での価値からだいたいいくらぐらいになるのかを知っているのが転売ヤーである

転売ヤー基本的に悪である。買い手からすれば、「手に入るハズだったものが、欲しくもないヤツに目の前でとりあげられて、ニヤニヤされるムカつき」を味あわされる。

そうして「どうせ手に入らないなら手にした者が破滅すればよい」というルサンチマン・すっぱい葡萄合理化から転売ヤーが敵視される。

これは自然感情であるので、転売ヤー擁護することはしない。転売ヤー大人しく罵倒を受けていればよい。

売り手からしても、転売ヤー名誉をかっさらモンスターである自分には人徳があり、美徳を重んじたために、その対価として名誉を得られるはずだったのに、転売ヤーは購入しても売り手に称賛など送らない。したがって売り手も転売ヤーを敵視する。顧客が高い金を払って転売ヤーから買った場合顧客は称賛など一切しないからだ。

これも自然感情であるので、転売ヤー擁護することはしない。転売ヤー大人しく罵倒を受けていればよい。

そう。悪いのはすべて転売ヤーである転売ヤーは徹底的に悪である

しかしその罵倒メカニズムもまた、市場経済に組み込まれている。転売ヤーは、罵倒されることで、金銭的な利益を得ている。

一方で売り手も買い手も、適正な価格というもの理解していない。売れるならば、それで手に入るユーザーが少なくなっても高くしなければならない。それが適正価格からだ。

この適正価格では、名誉の売買などされず、感謝はない。単なる正当で公平な取引である。もちろん「価格以上のものを売る」というピュア精神自体は素晴らしいものであり、経済を推進させるために重要ものだ。

買い手の「高くて買えない」「高いなら買わない」という思想は、資本主義を悪とみなし、みんなが平等に貧しくなろうとする清貧思想につながる。

結局のところ「そこまでして欲しくはない」のだ。「そんなに高いのならいらない」のだ。適正価格よりも安くすることで、本来手にとれないはずだったユーザーにまで裾野を広げ、そして人気と称賛を得る。

安いのだから責任は負いたくない。どこまでいっても、最後最後で「だって、こんなに安いのだからしょうがないじゃないか」という言い訳を作ることができる。

から成長しない。

適正価格よりも安くすることで、従業員給料なども安くなる。取引先にも「安さ」の圧力をかけ、よりものを安く安くと要求する。「いいものを安く」とは聞こえがいいが、「安くなければまともに買ってもらえない」「安くなければ称賛などされず対等だと思われてしまう」ことを知っている。

「高いけど買う」「買うために稼ぐ」「ほしいものを手に入れるために戦う」という思考にならなければならぬのだ。

日本はこの「名誉」とその逆である「恥」を子ども時代から徹底的に教育されている。「嫌われること」「排除されること」「村八分にされること」を必死で恐れている。

自尊心が低く、自己肯定感が低く、他者に対する期待が高い。

現代日本で起こっていることは、名誉価格が下落しているということだ。名など腹の足しにならず、名を取っていると死ぬときが来たのだ。しかも、名のため他人のためにどれだけ自己犠牲を払っても、他人はそれに見合った称賛をくれはしない。名を贈る余裕がなくなった。いよいよそれが耐えきれなくなったとき日本人の感情は爆発する。「実ばかりだけでなく、名も無いぞ」と。

誉や称賛を重視して、良い人であろうと、純粋であろうと、潔癖であろうと、善良であろうとするから転売ヤーを敵視するのだ。実際には血塗れで強欲で禍々しいはずなのに。

実際には、転売ヤーけが悪なのではない。売り手も買い手も悪なのだ。その悪を直視せず、小さな世界だけで完結しようとして、己と異質の黒船民族排除しようとするのは、尊王攘夷と何が違うのか。江戸はもう終わったぞ。

いい加減「いいものを安く」はやめろ。良いものは高いのだ。高くしろプロであるならば。感謝や称賛など求めるな。

ダンピングしてお手軽に名誉を獲得しようとする輩は、徹底的に糾弾し、より合理的・徹底的に搾取しなければならない。それが全体のためにふさわしい。

安くするから、そのツケがきているのだ。これがFalse Economyである

2023-08-18

ポルシェの加速が速いのはリアヘビーだから←この誤解ほんとに多い

this is completely false for AWD cars, I don't get why it gets repeated so much.

Ideally you want all 4 wheels to have the same amount of weight over them in an AWD launch, this way each wheel puts power down optimally. Since weight shifts towards the back during acceleration, this means that the ideal weight distribution for launching is somewhat to the front.

The RS3 is a good example of this effect in action, it launches well despite having a meh Haldex-like AWD system. The Hellcat on a prepped surface is another, despite being RWD.

Since the Turbo S is the opposite, it compensates by having way wider rear tyres compared to the front ones (255 front, 315 rear).

So actually the 911 launches well DESPITE the fact that it's rear-heavy, not because of it. It just modulates its power way better than the competition.

The 911's setup instead makes it brake so well, since the same principle as above applies just in the opposite direction.

「これはAWD車にとっては完全に間違いだ。なぜこのような誤解が繰り返されるのか理解できない。

AWDの発進では、4輪すべてに同じ重さがかかるのが理想的で、そうすることで各輪が最適にパワーを発揮する。加速時に重量が後ろに移動するため、発進時の理想的な重量配分はややフロント寄りになる。

RS3はこの効果の良い例で、ハルデックスのようなAWDシステムを搭載しているにもかかわらず、うまく発進する。整地された路面でのヘルキャットも、FRにもかかわらずそうだ。

ターボSはその逆であるため、フロントタイヤに比べてリアタイヤをかなりワイドフロント255、リア315)にすることで埋め合わせをしている。

まり911はリアヘビー「であるにもかかわらず」発進がいいのであって、リアヘビーだから発進がいいのではない。911競争相手よりもパワーをはるかにうまく伝えている。

逆に、それが911ブレーキが効く要因にもなっている。上と同じ原理が逆方向に適用されるからだ」

2023-07-19

anond:20230712150359

蜘蛛の糸を喩えとみなせば、そのような一般的な言い分を認める人たちは、2派に分かれる。一派は、「ナチスは実は良いこともしていたじゃないか」として、絶対悪の淵から救い出そうとする勢力だ。これがおそらくそのような主張をする人たちの大半であろうと思われる。だから、それらの一派は蜘蛛の糸絶対に切ったりはしない。たとえばそれらの良いことの実例の一つや二つ否定されたからと言って、それらの人たちは次から次へと蜘蛛の糸を垂らしてナチスを救い上げようとするのである

もう一派は、蜘蛛の糸の話そのもの、みたいなものだ。良いことをしていたかもしれないことは認めるが、ホロコーストなどの悪行のせいで絶対悪の淵からは救い出せぬ、とするのである。まるでその人達は、天上界のお釈迦さまそのもののようでもある。



例えば「絶対悪の淵とやらから救い出すべきかどうかなど天上界のお釈迦さまでもない人間には判断しようもないが、それはそれとして良いことの一つや二つくらいはしていたかもしれない」いう立場だってありますよね




誤った二分法(あやまったにぶんほう、英: false dichotomy)、選択限定あるいは誤ったジレンマ(英: false dilemma)は非論理的誤謬一種であり、実際には他にも選択肢があるのに、二つの選択肢だけしか考慮しない状況を指す。

誤った二分法 - Wikipedia

2023-07-12

敗戦後の日本人は再び力を持たないように、戦勝国から分断統治されてきた

歴史を学べば分かる。

日本人は誤った二分法(false dichotomy)により、思考停止に陥るように誘導されてる。

まりマスコミ鵜呑みにするような無能B層右翼左翼とかほざいてるだけ。

頭が悪い連中は自主的鎖国して英語ニュースとか読まないだろ?

まりは、そういうこと😂😂😂

2023-07-05

anond:20230705111302

Linqとか各言語all関数を叩けばそもそもtrueが帰ってくることがわかるはずなので、

falseを返すタイプ車輪を再発明する無能だし、仕様によるタイプ数学センスがない。

2023-07-04

10. タプルとコレクション

Python勉強メモ

ゼロからPython入門講座

10. タプルとコレクション

https://www.python.jp/train/tuple/index.html

 

以下、気になったところ。

 

タプル

タプル

Pythonでは、複数データの組み合わせから構成されているデータ表現する場合、タプル という種類のオブジェクトを利用します。

タプル(tuple)は、組 などとも呼ばれ、複数の要素が決まった順番にならんだ値を指します。

 

タプルの書き方

タプルオブジェクトは、複数の値をカンマ , で区切って記述します。

 

タプルはカッコで囲む習慣

タプルは、要素となるデータを「 , 」で区切って記述できますが、「, 」だけだとちょっと見にくいので、通常は全体を丸括弧 () で囲んで記述します。

 

ningyocho = (35.686321, 139.782211)

kotoshi = ('平成', 2)

 

この括弧は必須ではありませんが、括弧なしでは読みにくく、間違いの元になる場合もあるので、通常は括弧をつけて記述する慣習になっています

 

タプルオブジェクトの要素を参照する

タプルオブジェクト登録したオブジェクトは、リスト と同じように 要素の順番 を指定して参照できます

 

タプルオブジェクト[要素の順番]

 

要素の順番 として指定する数値のことを、リストオブジェクトと同じように インデックス(添字) と呼びます

 

タプルの比較演算子

タプルは、数値や文字列と同じように、比較演算子 を使って他のタプルと値を比較できます

 

== 演算子でタプル同士を比較すると、同じ値のタプルならTrue を返します。

 

!= 演算子でタプル同士を比較すると、異なる値のタプルなら True、等しい値なら False を返します。

 

<、 <=、>、>= などの演算子で、タプル同士の大小を判定できます

 

タプル同士の値の比較は、先頭の要素から順番に同じインデックス同士の値を比較して、先に小さい値となったタプルが小さい値となります

比較するタプル同士の長さが異なる場合、短いタプルの要素と長いタプルの要素を比較してすべて等しければ、短い要素のほうが小さい値となります

 

タプルオブジェクト操作

タプルオブジェクト場合リストオブジェクトのように要素を変更することはできません。

タプルオブジェクトの要素を変更する場合は、リストオブジェクトのように要素を変更するのではなく、あたらしくタプルオブジェクト全体を作り直す必要があります

 

タプルとリスト

タプルとリストはとてもよく似ています

どちらも他のデータを格納できるコンテナオブジェクトで、格納した要素は数値をインデックスとして参照できます

リストにはデータを追加したり削除したりできますが、タプルは変更できません。

 

リストとタプルはどのように使い分ければよいのでしょうか?

 

タプルは複数データの組み合わせから構成されているデータのためのオブジェクトです。

決まったルール記述した、固定的な形式データです。

複数の要素から構成される独立したデータ をあらわすときは、タプルを使用します。

 

固定的な形式もつ独立したデータではなく、不定個数の独立したデータをたくさん集約してまとめておきたい、という用途には、リストが適しています

 

リストとタプルの使い分け

 

コレクション

コレクション

数値オブジェクトは、物質の重さや長さなど、いろいろなデータの値を直接あらわすオブジェクトです。

一方、 リスト辞書は、直接的なデータではなく、いろいろなデータ登録して、集約しておくために使われるオブジェクトです。

 

リストやタプル、辞書のように、他のオブジェクトを集約することを目的とした種類のオブジェクトのことを、

コレクション (Collection)

と呼びます

 

コレクション操作

コレクションに属するオブジェクトは、どれも同じように使える、共通の処理が用意されています

 

コレクションの要素数

コレクション登録されている要素の数は、len() 関数で調べられます

 

コレクション比較演算子

コレクションは、比較演算子 の == 演算子や != 演算子で、値が等しいかどうかを判定できます

 

in 演算子

in 演算子を使うと、コレクションに値が登録されているかどうかを調べられます

in 演算子は < や == のような 比較演算子一種で、

値 in コレクション

という式は、指定した値がコレクション登録されていれば True を、登録されていなければ False を返します。

 

辞書の in 演算子

辞書オブジェクト場合、in 演算子指定した キー登録されているかどうかを調べます

 

文字列の in 演算子

文字列オブジェクト場合も、in 演算子で中に文字が含まれいるかどうかを確認できます

 

for文

コレクションは、 for 文に指定して、コレクションの要素ごとに、for 文に記述した処理を実行できます

 

辞書とfor文

辞書オブジェクトを for 文に指定すると、辞書のすべての キー を取り出して、for文に指定した処理を行います

 

シーケンス

リスト・タプル・文字列はいずれも コレクション に属するオブジェクトですが、コレクション一種で、整数値のインデックス指定して要素を参照できるオブジェクトのことを、

シーケンス (Sequence)

と呼びます

 

コレクションシーケンスの違い

リストやタプルなどのオブジェクトは、コレクション一種で、他のオブジェクト登録し、集約できるオブジェクトです。

シーケンスとは、コレクションのうちで、集約する要素が一定の順序で並んでいて、その順序(インデックス)を使ってその要素を指定できる種類のオブジェクトのことを指します。

 

コレクションに属するオブジェクトでも、リストやタプルとは違って、辞書 は、順序を指定して要素を指定することはできません。

このため、辞書コレクションですが、シーケンスではありません。

 

 

シーケンス比較演算子

タプルやリスト文字列などのシーケンスオブジェクトは、 <、 <=、>、>= などの演算子で、値の大小を判定できます

シーケンスではない、辞書オブジェクトなどのコンテナオブジェクトは、 < などによる大小の比較はできません。比較すると、エラーとなります

 

コレクションのアンパック

コレクションのアンパック

代入式の右辺がコレクションなどの場合には、左辺に複数変数名を指定して、コレクションの要素を一括して変数に代入できます

コレクションの要素を一括して変数に代入する方法を、アンパック(unpack) といいます

 

(例)

list_obj = [1, 2, 3]

var1, var2, var3 = list_obj # var1, var2, var3 に、list_objの要素を順に代入

print(var1, var2, var3)

 

1 2 3

 

変数 var1、var2、var3 には、右辺のリストオブジェクトの要素が一つずつ順番に代入されます

この場合、var1 には list_obj の最初の要素である 1が、var2、var3 には、それぞれ2番目と3番目になる 2 と 3 が代入されます

 

アンパックを利用した代入は、Pythonプログラミングで頻繁に利用されます

 

アンパックは、複数の値を戻り値とする 関数 でよく使われます

 

関数計算した結果は、return文 を使って、戻り値として返します。

しかし、関数 total_and_average() は合計値と平均値の2つを計算しますが、 return文 に指定できる戻り値は一つだけです。

そこで、return文には (合計値, 平均値) のタプルを指定し、二つの値を一つのタプルにまとめて返り値とします。

 

(例)

def total_and_average(values):

  total = 0 # 合計値の初期値 0 を設定

  for value in values:

    total = total + value

  # データ件数を求める

  num = len(values)

  

  # 合計値 ÷ 件数平均値を求める

  average = total / num

  # 戻り値として (合計値, 平均値) のタプルを返す

  return (total, average)

 

戻り値としてタプルを使い、複数の値を一度に返す関数はとてもよく使われます

テクニックとして覚えておきましょう。

 

まとめ

9. 辞書オブジェクト

Python勉強メモ

ゼロからPython入門講座

9. 辞書オブジェクト

https://www.python.jp/train/dict/index.html

 

以下、気になったところ。

 

辞書

辞書オブジェクト

あるデータ対応する関連データ登録できるような仕組みとして、Python辞書オブジェクト を用意しています

辞書オブジェクトには、appleりんご のような、2つの値を組み合わせた情報登録できます

appleりんご の組み合わせを登録した辞書オブジェクトで、apple検索すると、本物の英和辞典とおなじように りんご が返ってきます

このような機能から辞書オブジェクトは、別名「連想配列」とも呼ばれます

 

 

これらの基本的データ構造は、Pythonだけに限らず、他のプログラミング言語でも用意されている機能である

 

キーと値

辞書オブジェクト検索する時に指定するデータ(この例では apple) を、辞書キー といいます

また、キー対応して、検索の結果となるデータ(この例では りんご)を、辞書の 値 といいます

 

辞書オブジェクト作成

辞書オブジェクトは、波括弧 { と } で作成します。

 

{キー1:値1, キー2:値2, ...}

 

{ と } の間には、登録するキーと値を キー:値 という形式指定し、, で区切って記入します。

 

辞書作成

english_words = {"apple": "りんご", "orange": "みかん", "peach": "もも"}

print(english_words)

 

{'apple': 'りんご', 'orange': 'みかん', 'peach': 'もも'}

 

要素が登録されていない、空の辞書は、{} だけで作成します。

 

辞書の参照

辞書オブジェクト登録した要素は、次のような式で参照できます

 

辞書オブジェクト[キー]

 

print(english_words["apple"])

りんご

 

辞書登録されていない値のキー指定すると、次のようにKeyError というエラーが発生します。

 

english_words['banana']

---------------------------------------------------------------------------

KeyError

 

辞書操作

要素の追加と置き換え

辞書オブジェクトに要素を追加するときは、次のように記述します。

 

辞書オブジェクト[キー] = 値

 

このとき指定したキー辞書登録されていれば、その要素を指定した値で置き換えます

 

要素の削除

辞書オブジェクト登録されている要素を削除するときには、del 文を使います

 

del 辞書オブジェクト[キー]

 

辞書オブジェクトから指定したキーの要素を削除します。

登録されていないキーを削除すると、 KeyError というエラーが発生します。

 

辞書の要素数を求める

辞書登録されている要素の数は、リストオブジェクトと同じ ように、 len() 関数を使って求められます

 

in 演算子

辞書キー登録されているかどうか調べるときは、in 演算子を使います

in 演算子は &lt; や == のような 比較演算子一種で、

 

キー in 辞書オブジェクト

 

という式は、指定したキー値が辞書オブジェクト登録されていれば True を、登録されていなければ False を返します。

 

まとめ

8. オブジェクトとリスト

Python勉強メモ

ゼロからPython入門講座

8. オブジェクトリスト

https://www.python.jp/train/list/index.html

 

以下、気になったところ。

 

Pythonの型とオブジェクト

Pythonでは、整数実数文字列などのデータのことを、オブジェクト(Object) という用語で呼びます

Object英語で「物」とか「対象」とかい意味言葉ですが、Pythonでは、Python操作するいろいろな種類のデータプログラムなどのことを、まとめて オブジェクト と呼びます

 

オブジェクトの種類のことを、型 と呼びます

たとえば、数字の2は、整数型のオブジェクト文字列abc は、文字列型のオブジェクト という呼び方します。

次のプログラムは、関数 foo() を定義していますが、

def foo():

  print("hi!")

この foo も、 関数型のfooオブジェクト です。

import 文を使ってロードした モジュールオブジェクトです。

 

オブジェクト範囲

オブジェクトではないもの

演算子やwhile文 ・ if文 などはPythonに対する実行命令で、実体のあるオブジェクトではありません。

数値などの値のように、変数に代入したり、関数のように関数名を指定したりと、プログラマ名前をつけられるものオブジェクト

whileのようにつけられないものオブジェクトではない、

と考えると良いと思います

 

この説明だけでは、Pythonオブジェクトについて曖昧さが残りスッキリしない。

Python言語仕様で、オブジェクトはどうなっているのか?検索してみた。

 

google:python オブジェクト

 

cf.Python入門]Pythonオブジェクトとは - ITmedia

https://atmarkit.itmedia.co.jp/ait/articles/1907/12/news019.html

Python公式サイトにあるドキュメントオブジェクト、値、および型」では、Pythonにおけるオブジェクトとは「データ抽象的に表したもの」と表現されている。

まりPythonで書いたプログラム操作したり、処理したりするデータのことを「オブジェクト」という。

説明
int 整数」を表現する型
float 浮動小数点数」を表現する型
bool TrueFalseのいずれかの値を取り、真偽値(条件が成立しているかどうか)を表現する型
strUnicodeコードポイント値を任意の数だけ並べた「文字列」を表現する型(変更不可能
list 任意の型の要素を任意の数だけ並べた「リスト」を表現する型(変更可能
tuple 任意の型の要素を任意の数だけ並べた「タプル」を表現する型(変更不可能
dict キーと値の組からなる要素を任意の数だけ並べた「辞書」を表現する型(変更可能
set/frozenset任意の型の要素を任意の数だけ並べた順序のない「集合」を表現する型(setは変更可能。frozensetは変更不可能
function 関数」を表現する型
moduleモジュール」や「パッケージ」を表現する型

 

cf. 3. データモデルPython 3.11.4 ドキュメント

https://docs.python.org/ja/3/reference/datamodel.html#objects-values-and-types

Python における オブジェクト (object) とは、データ抽象的に表したものです。

Python プログラムにおけるデータは全て、オブジェクトまたはオブジェクト間の関係として表されます

(ある意味では、プログラムコードもまたオブジェクトとして表されます。これはフォン・ノイマン: Von Neumann の "プログラム記憶方式コンピュータ: stored program computer" のモデルに適合します。)

 

先に「プログラムデータ+処理」という話を挙げたが、

要するにPythonプログラムの中で処理(操作)できる対象すべてがデータであり、なおかつオブジェクトである」ということらしい。

 

上記の型の表を見ると、Pythonには「function」という関数オブジェクトもあるので、関数それ自体を1つのデータとして扱うことも可能

これを、「第一オブジェクト」という。

 

cf. 第一オブジェクト - Wikipedia

https://w.wiki/6wz4

第一オブジェクトファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数戻り値としての)受け渡しといったその言語における基本的操作制限なしに使用できる対象のことである

ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクト意味しない。

第一オブジェクトは「第一データ型に属す」という。

この言葉1960年代クリストファー・ストレイチーによって「functions as first-class citizens」という文脈で初めて使われた。

 

言語によって異なるが、第一オブジェクトは概ね次のような性質もつ

 

リスト

決まった順番に並んだ値で構成される情報は、Pythonでは リストオブジェクト表現します。

リストオブジェクトは、他のオブジェクトを 要素 として登録できるオブジェクトで、他のプログラミング言語では配列などと呼ばれることもあります

 

リストオブジェクトは、次のように 角カッコ [ と ] で作成します。

 

[要素1, 要素2, ...]

 

[ と ] の間には、リストの要素となるオブジェクトを、, で区切って指定します。

 

要素が登録されていない、空のリストは [] だけで作成します。

 

要素の参照

リストオブジェクト登録した要素は、次のような式で参照できます

 

リストオブジェクト[要素の順番]

 

リストオブジェクト登録した要素を参照するときは、リストオブジェクトに、参照する要素の順番を指定します。

最初の要素を参照するときは 0、その次は 1、のように指定します。

 

インデックス(添字)

ここで指定している要素の順番のことを、インデックス(添字) と言います

リスト最後の要素のインデックスは、リストの要素数 - 1 となります

 

インデックス(添字)は、1から始まるのではなく、0から始まる点に注意が必要

 

リスト操作

要素の挿入

リストに要素を追加するときには、リストメソッド である insert() を使用します。

 

挿入位置として、インデックスの最大値以上の値を指定すると、リストの末尾に要素を追加します。

 

要素の置き換え

登録済みの要素を別の要素に置き換えるときは、次のように記述します。

 

リストオブジェクト[インデックス] = 値

 

変数 の代入文とおなじ形式ですね。

代入文の左辺に指定できるインデックス値は、リストオブジェクト最後インデックス値 までです。

 

要素の削除

リストオブジェクト登録されている要素を削除するときには、del 文を使います

 

del リストオブジェクト[インデックス]

 

リストオブジェクトから指定したインデックスの要素を削除します。

del 文で指定できる要素のインデックスは、要素の置き換え と同じように、リストオブジェクト最後インデックス値 までです。

無効インデックス値を指定すると、エラーになります

 

while文を使ったリストループ処理

リストの長さを測るメソッド len()

リストオブジェクトの要素数を教えてくれる、len() という関数があります

関数 len() は、引数リストオブジェクト指定すると、その要素数を返してくれる関数です。

 

values = [1,2,3,4] # 要素数4のリスト

print(len(values))

4

 

for文によるループ

リストの要素を順番に参照する処理は非常によく行われるため、もっと簡単に書けるように、for 文 という、専用の文法が用意されています

 

for文の書き方

for 文は、次の形式記述します。

 

for 変数名 in リストオブジェクト:

  処理1

  処理2

  ...

 

for 文は、リストオブジェクト から要素を一つずつ順番に取り出し、それぞれの要素ごとに、for 文に続けて記述した処理を、一度ずつ実行します。

変数名 には、リストオブジェクトから取り出した要素を参照する変数名を指定します。

 

まとめ

2023-07-02

6. while文による繰り返し

Python勉強メモ

ゼロからPython入門講座

6. while文による繰り返し

https://www.python.jp/train/loop/index.html

 

以下、気になったところ。

 

while文によるループ

条件式と分岐 で、コンピュータプログラムの三つの制御構造を紹介しました。

ここでは最後制御構造である 反復(ループ) を紹介します。

反復処理は、決まった条件が満たされているあいだは、何度でも同じことを繰り返す、という処理です。

 

while文

Pythonでは、反復処理は while 文で記述します。

 

while 条件式:

処理1

処理2

...

 

while 文は、条件式 が満たされ、結果が True (真) であるあいだ、処理 を繰り返して実行します。

 

while文と、その後に続くインデントされたブロックを、while節 と言います

 

ループが止まらなくなってしまったら

whileループを使ったプログラムは、書き間違えると永久ループを実行し続ける事になってしまます

これが有名な「無限ループ」というやつですね。

Colabでは、こういったプログラムを実行して終了できなくなってしまったら、実行中のセル左側にあるボタンクリックすると、中断できます

 

break文による中断

while 文によるループは、指定した条件式が False になると、ループを終了しますが、それ以外にも、ループの途中で break 文を実行すると、ループを抜け出せます

 

代入文と等号

学校算数では、= という記号を 等号 として習ったと思います

しかし、Pythonをはじめとして、多くのプログラミング言語では、= 記号を等号とは違った意味で使います

 

かに「代入」の記号として「=」を使ってしまったのは、初心者に混乱をもたらす原因にもなるので、失敗だったのではないだろうか?と思う。

個人的には、リスト内包表記で値を取り出すときに使われる矢印みたいな記号(「&lt;-」)を、変数に値を代入/束縛するとき記号として採用すべきだったのではないかと思う。(内包表記の方は「&lt;--」にする等、違う記号にする工夫をすればOK

 

ここでは、とりあえず数学等価の「=」と、プログラミングの代入の「=」は違う、ということを理解しておけばOK

 

continue

break文による中断 では、ループを途中で中断する break 文を紹介しました。

今度は、ループを中断するのではなく、ループの先頭に戻ってやり直す continue 文を紹介します。

 

中断と継続のどちらを指定した方が、反復を書きやすいかで選べばOK

 

ところで、「counter」とか「i」とか、反復している間に回数などを記録しておく変数は、関数型プログラミングではどうなっているのだろうか?

 

アキュムレーター(accumlator 累算機)

関数型プログラミングでは、「再帰」という仕組みで反復を書ける。

再帰の仕組みは、高校数学で「数列」を習うと理解できる。

 

再帰で反復している間、途中の計算結果を保持する方法として、「アキュムレーター」(塁算機)という機能が用意されている関数型プログラミング言語が多い。

アキュムレーターを使うと、Pythonカウンターと同じようなことが関数型でもできるようになっている。

関数型プログラミングでは再帰で反復を行うために、いろいろな工夫や機能があるので、後々学ぶときに改めて学ぼう。

 

cf. 再帰を末尾再帰に変換する基本ステップ - Qiita

https://qiita.com/necojackarc/items/0aa2e35147da6a2c702a

 

まとめ

  • Pythonで反復を書くために、while文が用意されている。
  • 反復を中断させたり継続するために、break文やcontinue文が用意されている。
  • while文は書き方(条件)を間違えると、永久ループになって終わらなくなるので注意が必要
  • Colabでは、永久ループになったら強制的に停止させることができる。
  • 関数型プログラミングでは、再帰やアキュムレーター(累算機)などを使えば、Pythonの反復と同じことができる。

5. ブール型と論理演算子

Python勉強メモ

ゼロからPython入門講座 

5. ブール型と論理演算

https://www.python.jp/train/logical_oper/index.html

 

以下、気になったところ。

 

ブール型と論理演算

2つ以上の比較演算子を組み合わせ、もっと複雑な条件を記述する 論理演算 を学びます

 

ブール型

ブール型 は TrueFalse どちらかの値をとり、TrueFalse は、それぞれ 真 と 偽 を意味します。

 

論理演算

つの条件式だけでなく、複数の条件を組み合わせた、複雑なルールプログラムとして記述できます

このように、複数の条件を組み合わせて、条件を判定する演算子を、論理演算子(またはブール演算子) と言います

 

Python論理演算子には、次の3種類があります

1. and 演算子

2. or 演算子

3. not 演算子

 

以下に、この3つの論理演算子の説明が続くのだが、説明見てみるとベン図の説明がなかった。

中学校高校数学で、「集合」や「ベン図」の書き方などを習ったはずなので、論理演算子の働きについては図解で示した方が分かりやすいだろう。

 

ベン図

ベン図 - Wikipedia

https://w.wiki/5CPU

ベン図(ベンず、もしくはヴェン図、英: Venn diagram)とは、複数の集合の関係や、集合の範囲視覚的に図式化したものである

イギリス数学者ジョン・ベン (John Venn) によって考え出された。

 

論理演算をベン図で表すことがある。

ベン図は本来は集合についての関係を表すもので、論理演算に対してベン図を用いるのは本来の使い方ではないが、現実には、集合代数論理演算ブール代数として等価であることから論理演算視覚にわかやす表現する手法としてしばしばベン図が用いられる。

 

cf. 集合(和集合/積集合/否定)とベン図とは?|ITパスポート試験無料教材 | ぽんぱす

https://45kaku.com/itpassport_text_33-04/

↑このWebページの「和集合/積集合/否定」という項目の図を参考にすれば、「and」「or」「not」がどうなっているかよく分かる。

 

and 演算子

and 演算子は、左右に指定された値の両方が True場合True を返します。 どちらか一方でも False なら、and 演算子の結果も False となります

 

論理積

and のように、すべての入力値が Trueときのみ結果が True となる論理演算は、論理積 ともいいます

 

or 演算子

or 演算子は、左右に指定された値のどちらか一方、または両方が True場合True を返します。 両方が False なら、or 演算子False となります

 

論理和

or のように、すべての入力値が Falseときのみ結果が False となる論理演算は、論理和 ともいいます

 

not 演算子

not 演算子は、指定した式の値を 反転 し、値が True(真) なら False(偽)を返し、False(偽)ならTrue(真) を返す演算子です。

 

否定

not のように、入力値が反転した値が結果となる論理演算を、否定 ともいいます

 

まとめ

  • 論理演算子「and」「or」「not」の働きは、ベン図を書くとよく分かる。

4. 条件式と分岐

Python勉強メモ

ゼロからPython入門講座

4. 条件式と分岐

https://www.python.jp/train/if_condition/index.html

 

以下、気になったところ。

 

条件式と分岐

コンピュータプログラムは、どんなに複雑そうにみえプログラムでも、細かく分解すれば次の3つの単純な構造の組み合わせで構成されています

1. 処理を上から順番に一つずつ実行する 順次処理

2. 条件によって処理を選択する 分岐処理

3. 条件が満たされている間、処理を繰り返す 反復処理

 

重要なことがサラッと書かれている。

これは一般的に「構造プログラミング」と呼ばれている考え方のことだ。

 

構造プログラミング - Wikipedia

https://w.wiki/3eS6

構造プログラミング(こうぞうかプログラミング、英: structured programming)は、コンピュータプログラムの処理手順の明瞭化、平易化、判読性向上を目的にしたプログラミング手法である

一般的には順接、分岐、反復の三種の制御構造(control structures)によって処理の流れを記述することと認識されている。

制御構造制御構文、構造化文(structured statement)、制御フロー文(control flow statement)とも呼ばれる。

また、プログラム任意に分割した部分プログラムサブルーチンコードブロック)の階層的な組み合わせによるプログラム構造化も指している。

このプログラミング手法の普及に貢献したのは、1968年計算機科学エドガーダイクストラによるACM機関紙への投書「Go To Statement Considered Harmful」と言われている。

 

前に「プログラムデータ+処理」という話をした。

プログラム構成する要素は、(1)データと(2)処理であり、構造プログラミングは、このうちの(2)処理に関する話という位置付けになる。

手続プログラミング命令プログラミング一種)では、処理を

  1. 順接
  2. 分岐
  3. 反復

という3つの動作組合せで作っている。

 

後で学ぶ関数型プログラミングでも、この3つと同じことができる動作が登場する。

参考までに手続型と関数型の基本動作について、対応関係を押さえておこう。

手続関数動作
順接 合成 処理をつなげていく
分岐パターンマッチ 処理を場合分けする
反復 再帰 処理を繰り返す

 

構造プログラミングの図解

構造プログラミングの仕組みは、文字でゴチャゴチャ説明されるよりも、目で図解を見た方が早いと思う。

Googleの画像検索で「構造プログラミング」を検索して、分かりやすそうな図解を探してみよう。

 

cf. 構造プログラミングの苦難の歴史

https://monoist.itmedia.co.jp/mn/articles/1008/17/news092.html

 

↑ちなみに、図解で出てくる流れ図みたいなのはフローチャート図」と呼ばれていて、プログラム構造を紙に書くときよく使われる書式である

 

比較演算子

値を比べる方法が紹介されている。

数値の大小は、比較演算子と呼ばれる記号で書ける。

 

増田比較演算子を書く方法

はてなアノニマスダイアリー通称増田)で記事を書く時、一部の文字エスケープされて元々の文字を表示できない。

検索したら回避方法が紹介されていた。

anond:20200114141823

増田記号を正しく入力するには、数値文字参照を使うんやで

&#38; → &

&#60; → <

&#62; → >

 

演算子 条件
a < b a は b より小さい
a <= b a は b と等しいか小さい
a > b a は b より大きい
a >= b a は b と等しいか大きい
a == b a と b は等しい
a != b a と b は等しくない

 

ブール型

真か偽かを示すデータの種類として、ブール型という新しい型が紹介されていた。

 

cf. ブーリアン型 - Wikipedia

https://w.wiki/3FSR

ブーリアン型(ブーリアンがた、英: Boolean datatype)は、真理値の「真 = true」と「偽 = false」という2値をとるデータである

ブーリアン、ブール型、論理型(logical datatype)などともいう。

2種類の値を持つ列挙型とも、2進で1ケタすなわち1ビット整数型とも、見ることもできる。

 

また、各種ブール演算を行うことができ、論理積 (AND、&、*)、論理和 (OR、|、+)、排他的論理和 (XOR、NEQV、^)、同値 (EQV、=、==)、非同値 (NEQV、<>、!=)、否定 (NOT、~、!) などの操作可能である

これらの演算ブール代数演算対応している。

 

cf. ブール代数 - Wikipedia

https://w.wiki/53JN

ブール代数(ブールだいすう、英: boolean algebra)またはブール束(ブールそく、英: boolean lattice)とは、ジョージ・ブールが19世紀中頃に考案した代数系の一つである

ブール代数研究は束の理論が築かれるひとつの契機ともなった。

ブール論理演算ブール代数の一例であり、現実の応用例としては、組み合わせ回路(論理回路)はブール代数の式で表現できる。

 

cf. 「Boolean」の翻訳を「論理型」とすべき3の理由 – Kenchant

https://senooken.jp/post/2016/03/21/2571/

プログラミング言語HTMLのようなマークアップ言語などプログラミングに関する文書を呼んでいるとboolean(ブーリアン)という単語に出くわす。

Booleanとは真(True)と偽(False)という2値をとるデータ型のことである

 

情報元によって、このBooleanの翻訳呼び方が異なっている。以下のように呼ばれたり訳され、最後に「型」や「値」がついたりつかなかったりする。

ブール、ブーリアン、真偽、論理、真理

 

このBooleanの呼び方としてどの訳し方がよいか気になったので調べた。

その結果「論理型」と訳すのがよいという結論が得られた。

その理由は以下3点だ。

 

1. Booleanはlogical data type(論理型)の特殊なケースであること。

2. JIS規格での翻訳採用数が一番多い。

3. 論理演算用語統一される。

 

Colabで比較演算子の働きを確かめてみよう。

10 < 100 # 10100より小さい

True

10 > 100 # 10100より大きい(間違い)

False

 

文字列の比較

文字列同士の比較では、人間感覚とはことなった比較結果となる場合があるので注意してください。

一般的には、半角の数字アルファベット比較は、次のような結果になり、安心して利用できます

 

1. 数字は、文字の0が最小、9が最大(0 < 1 < 2 < ... < 9)

2. アルファベットでは、a が最小、z が最大 (a < b < c < ... < z)

3. 大文字は小文字より小さい (A < a, B < b, ...)

4. 数字は、アルファベットよりも小さい (0 < 9 < A)

などのルールがあります

 

文字列の大小の比較に、ユニコードという文字一覧表を使っており、その文字コードの大小で比較しているという種明かしをしないと意味が分からないと思う。

種明かしをしていない、という意味で、この説明もあまり良くないと思った。

 

cf. python 文字列の比較 | Hello, Pygineer

https://knuth256.com/2021/09/20/python-%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E6%AF%94%E8%BC%83%EF%BC%81unicode%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE/

文字列 (strインスタンス) の比較は、文字Unicodeコードポイントの数としての値 (組み込み関数 ord() の返り値) を使った辞書式順序で行われます

抽象文字レベルで (つまり人間にとって直感的な方法で) 文字列を比較するには unicodedata.normalize() を使ってください。

 

文字列の比較は、一致か不一致かを調べる場合が多いと思うので、大小の比較はあまり気にしなくても良いような気がする。

 

if 文 による条件分岐

条件による処理の分岐は、if 文 で行います

if 文は次のように記述します。

 

if 条件式:

処理1

処理2

...

 

このように記述すると、条件式 の結果が True になったとき、処理1、処理2、... が実行されます

条件式 が False場合は、処理1、処理2 は実行されません。

 

インデント(字下げ)

Pythonの書き方を特徴付けている1つが、この「インデント記法

 

if 文の書き方

if 文は、 まず if 条件式: という行で始まります

条件式の後ろに、: 記号必要ですので、忘れないように気をつけてください。

if 条件式: の次の行から、条件式が True となった場合に実行する処理を記述します。

 

インデント

条件が満たされたときに実行する処理は、行の先頭に スペース文字 を 4文字 入力してから記述します。

 

if a == 100:

  処理1

  処理2

  処理3

^^^^

スペースを4文字入力

このように、行の先頭にスペース文字を入れて段付けすることを、インデント と言います

インデントは、かならず スペース4文字 で行います

 

関数型プログラミング言語Haskell」でも、Pythonのインデントと似た「レイアウトルール」「オフサイドルール」という記法が用意されている。

 

cf. とほほのHaskell入門 - とほほのWWW入門

https://www.tohoho-web.com/ex/haskell.html#layout

レイアウト

Python の様にインデントを用いることで、{ ... } ブロックの { と } を省略することができます

 

main = do

 putStrLn "Red"

 putStrLn "Green"

 putStrLn "Blue"

 

話を戻すと、Pythonではインデント(字下げ)が文法的意味を持っており、省略できないということ。

Pythonでは、1つのブロックコードの塊)をインデント位置で束ねている。

 

他のプログラミング言語では、ブロックの開始と終了を表す記号(「{」と「}」など)がよく使われたりするけど、Pythonはその代わりにインデントを使う。

外見は見やすくなるけど、逆に言えばインデントを間違えたら、コード意味が変わってくるので、長所短所を両方併せ持った記法とも考えられる。

 

元々、Python教育用途言語としたスタートした歴史があるので、可読性を重視しており、誰が書いてもある程度同じようなコードになることが求められている。

その要求に対する答えの1つが、インデント記法ということだったのだろう。

 

else 節

関数型プログラミングの考え方を参考にする場合、if文を使った関数はelse節を省略しないで、True場合でもFalse場合でも、必ず戻り値を返すように設計しておいた方が良いと思う。

ifも文ではなく式として見るならば、評価した結果を必ず返すようにしておく必要がある。

副作用の有無に関わらず)TrueでもFalseでも、必ず値を返すようにしておけば、戻り値なし(void)を避けられる。

これは後々、例外処理の書き方などで効いてくるので、Pythonでもif文でelse節を省略しないで書けないか?考える習慣を身につけておきたい。

 

比較以外の条件式

特になし。

 

elif 節

特になし。

 

まとめ

2023-06-07

住居表示正規化問題技術ではなく、社会全体の問題である

住居表示正規化話題になっていたが、住居表示正規化不可能である

まずデタラメに書く人がいるということが重要な点である。これはどうやっても防げないものだ。デタラメさ加減にも許容範囲はあろうが、この許容範囲のものも各要件によっては曖昧ものである

問題は、そのデタラメに書かれたものや、虚無的な例外までも救おうとする態度にある。我々はとかくすべてを100%完全にやろうとしがちであり、ここについてコスト意識を持って考えない。

しかしながら、7〜8割ほどうまくいくルールというのは示せるはずであろう。そうしたルールを公開し、「このルール・規格に沿った自治体恩恵が大きい。そうでなければ各自プラグインなどを作って頑張って。OSSもあればなお可」というようにすればよい。

要はシステムを作る側が地方自治体配慮し過ぎなのであり、「住所正規化に携わる人間組織は、名寄せ困難な地方自治体よりも格下」というような位置付けに現状なっている。これでは正規化原理的に不可能ではないかAIを使おうが無理であろう。

無限例外があるならば、「その無限例外を切る」という態度が非常に重要であるはずだ。だいたい、無限例外があるのならば正規化もクソもない。正規ものなど何もないのだ。星の数ほどある例外まで気にしていたら、金がいくらあっても足りない。経験者たちが、バラエティに富んだ無限例外の1つ1つについての苦労話を次世代に引き継ぐ語り部になっているだけではないか

これではまるで、多種多様契約非正規雇用パートナー社員と呼んで、全員を「正規社員です」と言っているようなものである

こうした「例外を切る」という態度について「酷い」という意見もあるかもしれないが、コストパフォーマンスで見れば、切らない方がコストが増えてかえって酷いのである。こうした事象False Economyなどと言われる。嫌われる勇気を持てないのだ。

実際に例外を切っていけば「住居表示正規化ができない地方自治体は滅びる」というような状態になってしまうであろう。だから、そちらを逆に支援すればよいのだ。支援すればよい、というよりも支援しなければならない。これこそが進歩であり前進である

ただしこれは楽観的な論であり、住居表示正規化のために地方自治体無視するような法律を作ることは現状ではかなり困難であろう。各自治体住民から反対運動が起きかねないし、必ず当地議員からの反発が予想される。

まりシステム開発側が、小金ときでおもねるのではなく明確に「ノー」と言わなければならないのである。それを「へへぇっ〜!お金様ですかいっ!」と平伏して、日本各地で勇猛果敢なインパール作戦に突貫しているのが現実ではないのか??

そういう構造を評して「住居表示正規化程度の問題」と無知な人から言われている。要は軽んじられており、気にも留められていない。「俺たちの方が賢いぞ」と思われているのだ。開発者が不可触民だった時代はすでに終焉を迎えているにもかかわらずだ。

ほう、政府とはそんなパワーすらない存在なのか?と思われている。鶴の一言でやればよいではないか?と思われている。

しかしそんな政府に我々の生活をなんとかしてくれと国民は言う。未だにそういう臣民体制社会なのである政府は弱いし、国民も弱いし、俺もお前も弱いのだ。経済がそれを示している。

AIさまがなんとかしてくれるというのは、単なるドラえもん待ちの空想ではないのか?

AIは、残念なことに不思議ポッケで夢を叶えてくれるドラえもんではない。したがって我々のび太くんが変わらなければならないのだ。のび太くんだけで住居表示正規化をなんとかしなければならないのだ。

「できぬものはできぬ」「やらぬものはやらぬ」とハッキリ言える力が我々には必要なのかもしれない。

俺は住居表示正規化はやらん。お前もやるな。

2023-06-04

配列のすべての要素が条件を満たすならtrueを返す」関数定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ

2023-06-01

anond:20230601145737

true/falseではなく1/0で、andではなく積で考えれば納得してくれる人多そうな気がする

anond:20230601145737

false派のアカウントで「SES」で検索すると、SESに対する怒りツイートをしていて「あっ...」ってなったな。

人に「センスない」って言っているやつが一番センスない

https://qiita.com/saetegaljewp/items/60a3580d8f08a53679c6


センスのあるなしではなく、

誤って語っていることを、誤りだと指摘されているだけです。


存在措定が問題になるのは「会話の含意」「伝統的論理学」の文脈においてであって、

現代論理学、数理論理学においては、存在措定は問題になりません。

なぜなら、現代論理学存在措定してないからです。


伝統的論理学は「存在措定」しているから、問題になります


伝統的論理学三段論法説明します。(以下の例は存在措定してる例)

1.すべてのSはMである

2.すべてのPはSである

3.あるPはMである

このとき、Pであるような何かが存在しない限り、1と2から3を導くことができません。

したがって伝統的論理学は隠れた前提として「存在措定」が成されている、と指摘されているわけです。


現代論理学はそのような存在措定をしていません。

からこそ、空集合を前提しても、命題が真であることを帰結できるのです。

そして、ここでセンス云々問われている問題が前提している論理の体系は、現代論理学であって、伝統的論理学ではありません。


なので、存在措定の話はしないでください。

それは伝統的論理学文脈の話であって、もともとの話が前提してる数理論理学とは直接的関係を持たない話題です。


しかし、命題にはP(x)に対する前提が隠蔽されており、この「P(x)なもの存在する」という隠れた前提(これを存在措定と言います)を勝手に補って読んでいるのです。

存在措定してるのは、「前件が空集合ならfalseが返されるべきだ」と主張してる側であることを理解してください。

なぜなら、「存在していないもの命題Pを適用できないはずだ」という主張は、まさに、「集合に対する存在の措定」を前提しているからです。

trueを返すべきと主張する側は、そのような「集合に対する存在措定」を前提していないからこそ、trueが返るべきだという話をしています

前者が伝統的論理学であり、後者が数理論理学立場です。


また、プログラミングにおいては、論理の体系を自然言語に近づけるべきだとは、(私は)考えません。

しろ自然言語あいまいさを排除されるべきだと考えます

そして、自然言語あいまいさを排除すれば、「AならばB」という文の意味論理包含となります

まり、前件が偽であれば、命題は真となります


実装仕様がどうあるべきかという議論は、まず、この前提に立ったうえで行われるべきです。

2023-05-31

論理的に正しいかどうかより

要件次第でしょって言いたいだけの人達

真面目に相手してるのすごすぎて涙出そう

俺は全てを諦めてfalseを返した

2023-05-23

anond:20230523143055

こっちからは見えない。 {"data":{"error":"Imgur is temporarily over capacity. Please try again later."},"success":false,"status":403}

2023-05-12

anond:20230512192923

  • To generate or disseminate verifiably false information and/or content with the purpose of harming others;
  • To generate or disseminate personal identifiable information that can be used to harm an individual;

あたりが該当するんじゃないか

2023-04-26

メモ

Sub CheckForGarbledCharacters()

Dim ws As Worksheet

Dim rng As Range

Dim cell As Range

Dim char As String

Dim i As Integer

Dim garbledFound As Boolean

Dim unicodeVal As Long

garbledFound = False

' すべてのワークシートをチェックします。

For Each ws In ThisWorkbook.Worksheets

Set rng = ws.UsedRange

' 各セルスキャンして文字化けがないかチェックします。

For Each cell In rng

For i = 1 To Len(cell.Value)

char = Mid(cell.Value, i, 1)

unicodeVal = AscW(char)

' ASCII範囲日本語範囲を除外

If Not ((32 &lt;= unicodeVal And unicodeVal &lt;= 126) Or (12353 &lt;= unicodeVal And unicodeVal &lt;= 12447) Or (12448 &lt;= unicodeVal And unicodeVal &lt;= 12543) Or (65382 &lt;= unicodeVal And unicodeVal &lt;= 65439) Or (19968 &lt;= unicodeVal And unicodeVal &lt;= 40959)) Then

MsgBox "文字化けが見つかりました: " &amp; vbCrLf &amp; _

"ワークシート: " &amp; ws.Name &amp; vbCrLf &amp; _

"セル: " &amp; cell.Address &amp; vbCrLf &amp; _

"セルの値: " &amp; cell.Value &amp; vbCrLf &amp; _

"文字化けしている文字: " &amp; char, vbExclamation

garbledFound = True

Exit For

End If

Next i

' 文字化けが見つかった場合、次のワークシートへ移動します。

If garbledFound Then Exit For

Next cell

If garbledFound Then Exit For

Next ws

If Not garbledFound Then

MsgBox "文字化けが見つかりませんでした。", vbInformation

End If

End Sub

ログイン ユーザー登録
ようこそ ゲスト さん