頭チキン談義 vol.1

yukicoderの問題を解いていて、一切進歩していないんだなーと理解した、私です

今回はその辺りを踏まえて、タイトル通りに雑談をメインとした内容です

こんなアホでもプログラミングはできるから、もしやることが無くて暇だったら挑戦しよう！

とプログラミングを始めることに抵抗がある人へ向けた激励・・・出来たらイイナー
<br>
では、さっそく進めましょう

##Qiitaにプログラムを書く理由

正直、私がQiitaにプログラムを書いているのは、別に意見が欲しいとかではないです

単純な話として、yukicoderにしてもCheckiOにしても解答って出てくるわけですよ

CheckiOは解答に投票する機能まであって、良いプログラムが書きたいならコピーすればいいわけで・・・

速度とか鮮やかさなどの議論をしたいなら、それを許可を貰って掲載しますしね

ですから、態々ここにプログラムを書いているのは、

私が何を考えて何をしたくてこの形にしたのか、を少しでも伝えられたらと思って書いているのです

そうじゃないと態々書く意味ないですし・・・

厚かましいとは思いますが、むしろ意見をくれるのなら私のプログラムを基に改造してよ！と思います

で、多分タイトルに問題があるんだと思い、『頭チキンのプログラム』に改名しました

頭チキンなら、糞プログラム書いても許してもらえる・・・はず

わけわかんねぇプログラム書いてんじゃねーよ！とか突っ込みたいのはわかりますがね

ほら、こちらとしても書いている以上、個性が無いと意味ないですしおすし

##一つも進歩していない・・・

ChekiOでThe Square Chestという問題があるんですよ

![sqare.png](https://qiita-image-store.s3.amazonaws.com/0/293790/2279552c-1d13-fd19-de8c-0d1ccadad84b.png)

```
この図から適当な点を指定するから、何個の正方形ができるか答えなさい
```
という、問題なんですけどスマートな人は超クールな解答をするんだと思います

実際にCheckiOにもすげー書き方をしている人もいました

で、forとifだけ分かればプログラミングができるとか聞いて、

それを真に受けてifとforしか学ばなかった頭チキンの私がどうやって解いたのかと言うと、

```Square.py
from typing import List

def checkio(lines_list: List[List[int]]) -> int:
    """Return the quantity of squares"""
    z=[]
    for i in lines_list:
        y=sorted(i)
        z.append(y)

    a=[1,2]
    b=[2,3]
    c=[3,4]
    d=[5,6]
    e=[6,7]
    f=[7,8]
    g=[9,10]
    h=[10,11]
    i=[11,12]
    j=[13,14]
    k=[14,15]
    l=[15,16]
    m=[1,5]
    n=[2,6]
    o=[3,7]
    p=[4,8]
    q=[5,9]
    r=[6,10]
    s=[7,11]
    t=[8,12]
    u=[9,13]
    v=[10,14]
    w=[11,15]
    x=[12,16]
    #1*1 square  all=9 items=4
    count=0
    if a in z:
        if m in z:
            if n in z:
                if d in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if b in z:
        if n in z:
            if e in z:
                if o in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if c in z:
        if o in z:
            if p in z:
                if f in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if d in z:
        if q in z:
            if r in z:
                if g in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if e in z:
        if r in z:
            if s in z:
                if h in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if f in z:
        if s in z:
            if t in z:
                if i in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if g in z:
        if u in z:
            if j in z:
                if v in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if h in z:
        if v in z:
            if k in z:
                if w in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if i in z:
        if w in z:
            if l in z:
                if x in z:
                    count+=1
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass
#2*2 square  all=4 items=8
    if a in z:
        if b in z:
            if m in z:
                if q in z:
                    if g in z:
                        if h in z:
                            if o in z:
                                if s in z:
                                    count+=1
                                else:
                                    pass
                            else:
                                pass
                        else:
                            pass
                    else:
                        pass
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if c in z:
        if b in z:
            if n in z:
                if r in z:
                    if i in z:
                        if h in z:
                            if p in z:
                                if t in z:
                                    count+=1
                                else:
                                    pass
                            else:
                                pass
                        else:
                            pass
                    else:
                        pass
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if d in z:
        if e in z:
            if q in z:
                if u in z:
                    if j in z:
                        if k in z:
                            if s in z:
                                if w in z:
                                    count+=1
                                else:
                                    pass
                            else:
                                pass
                        else:
                            pass
                    else:
                        pass
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass

    if e in z:
        if f in z:
            if r in z:
                if v in z:
                    if k in z:
                        if l in z:
                            if t in z:
                                if x in z:
                                    count+=1
                                else:
                                    pass
                            else:
                                pass
                        else:
                            pass
                    else:
                        pass
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass
#3*3 square all=1 items=12
    if m in z:
        if q in z:
            if u in z:
                if a in z:
                    if b in z:
                        if c in z:
                            if j in z:
                                if k in z:
                                    if l in z:
                                        if p in z:
                                            if t in z:
                                                if x in z:
                                                    count+=1
                                                else:
                                                    pass
                                            else:
                                                pass
                                        else:
                                            pass
                                    else:
                                        pass
                                else:
                                    pass
                            else:
                                pass
                        else:
                            pass
                    else:
                        pass
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        pass
    return count
```
全部の通りを書き出すとかいう暴挙を行ったわけです

~~さながらスリンキーで草~~

いや、最初はa~lまでだったんですけど、『and』だか『if』だかの性質で

二つ目以降は判定されないんですよね・・・この場合だと『in』以降が無視されるわけです

その結果としてa~zまで伸びたんですよね

先輩に見せたら、『pythonの良さが皆殺しにされてるwwwww』

と草生やされました

**頭チキンですね**、笑っても良いですよ

笑った人には以下の権利を差し上げます

![ひょうしょう.png](https://qiita-image-store.s3.amazonaws.com/0/293790/c73c609d-4b3c-c280-b497-894e3c24dd4a.png)

こぞって書いてね！

で、そんな私なんですが、yukicoderにNo.297という問題があります

```
与えられた文字列を操作しても良いので”tree”の数を答えなさい
```
という問題があります

さて、お気づきの方はおられるでしょう、頭チキンの解答はこれです

```297.py
S=list(input())
t=S.count("t")
r=S.count("r")
e=S.count("e")
e=e//2
if (t>=r) :
    if (r>=e) :
        print(e)
    else:
        print(r)
elif (r>t) :
    if (t>e) :
        print(e)
    else:
        print(t)
elif (r>=e) :
    if (e>=t) :
        print(t)
    else:
        print(e)
elif (e>r) :
    if (r>t) :
        print(t)
    else:
        print(r)
elif (t>=e) :
    if (e>=r) :
        print(r)
    else:
        print(e)
elif (e>t) :
    if (t>r) :
        print(r)
    else:
        print(t)
else:
    pass
```
全通りの書き出しですね！

```
　　　　　　　iｲ彡　_＝三三三ｆ　　　　　　　　　　　ヽ
　　　　　　　 !ｲ 彡彡´_ -_=＝{　　　      　二三三ﾆﾆﾆﾆヽ
　　　　　　　fｲ 彡彡ｨ　彡ｲ／　　　     　ｨ_‐- ､　　￣￣ ヽ　　　　　し　　ま
　　　　　　　ｆ彡イ彡彡ィ／　　　　   　ｆ ＿￣ ヾﾕ　 fヱ‐ｫ　　　　 て　　る
　　　　　　　ｆ／ミヽ＝＝＝＝＝＝＝＝<|-'いシ　lr＝〈ｆラ/ !ﾌ　　　 い　　で
　　　　　　　ｲｲレ､´彡ｆ　　　　　 　   ヽ 二 _rソ　　弋_ { .ﾘ　　　 な　　成
　　　　　　　ｆﾉ ／） 彡!　　 　 　 　 　 　   ｨ　　 　 ﾉ￣l  　 　 い 　 長
　　　　　　　ﾄヾ__ら 'ｲf　　　　　ｕ　　　 ／_ヽ,,テtt,仏　 !　　　　：
　　　　　　　|l|ヽ ｰ　 '/　　　　 　　　　　 rfｲｆ〃ｲ川ﾄﾘ　/　 　 　 ：
　　　　　　 r!lﾄ､{'ー‐　　　 ヽ　　　　　　´　 　 ヾミ､　 /　　 　 　：
　　　　　　/ ＼ゞ　 　 ヽ　　 ヽ 　 　 　 　 　 　 　 ヽ /
　　　 　 ./　 　 ＼　　　 ＼　　 ヽ　　　　　　　　　　/
　　　／〈　　　　　＼　　　　　　　　　　　　　　　　 ﾉ
-‐ ´ ヽ　ヽ　　 　 　 ＼＼　　　　 ＼　　　　　 　 人
```
頭チキンが頭チキンたる由縁がここにありますねぇ！

それしかできんのかこの猿ゥ！とか言われそうですが、猿ほど知能よくねぇから！

いやーCheckiOの問題解いたのが、6月ですからね・・・五ヶ月後にも関わらず成果ゼロです

何の成果も得られていない・・・

こうしたことを脱却するために、アルゴリズムの勉強をしているにも関わらず、これですからね・・・

どうすれば脱却できるんですかね・・・コピペですか？コピペを連打すればいいんですか？

初心に帰って、算数から学び直せばいいんですか？

たぶん、全世界のプログラム初心者が一番聞きたいところはここですよ

この辺りの勉強法ですよ

皆さんはどうやって鮮やかなプログラミング技術を学んだんですか？<br>

##Fortranの謎
yukicoderにて、Fortranの謎を発見しました

No.591なんですが内容はシンプルで、

```
目と口を与えるので、()/にはめ込みなさい
```
という問題です

最初は普通に

```miss1.f90
implicit none
integer(8) a,b
character(1) e,m,l,n
read(*,*) e
read(*,*) m
write (*,*) "(",e,m,e,")/"
end
```
と書いていたんですがWAと判定が返りました

どうも『/』という入力を上手く処理できないようです

そこで、私は試しに入力を文字コードに変換して、再度文字に戻す作業をしました

```miss2.f90
implicit none
integer(8) a,b
character(1) e,m,l,n
read(*,*) e
read(*,*) m
a=ichar(e)
b=ichar(m)
end if
l=char(a)
n=char(b)
write (*,*) "(",l,n,l,")/"
end
```

それでも『/』の入力がうまく処理できません

少し疑問に思い、『a』と『b』を出力させた所、『0』で帰ってきました

『/』はFortran90に設定されていない？と考えて『ichar("/")』と書くと、

きちんと『47』と出力されました

うーん謎

結果的に

```591.f90
implicit none
integer(8) a,b
character(1) e,m,l,n
read(*,*) e
read(*,*) m
a=ichar(e)
b=ichar(m)
if (a==0 .and. b==0) then
    a=47
    b=47
end if
l=char(a)
n=char(b)
write (*,*) "(",l,n,l,")/"
end
```
と力業で処理しましたが、いったい何がダメだったんでしょう？

Fortranの謎ですヨ


##最後に
とこんな感じで、頭チキンプログラムを見せつけられて色々な思いをした人もいると思います

ただ、私が言いたいことは、こんな頭チキンプログラムでも一応プログラムなんですよ！ということ

そもそも、私が一番最初に作ったプログラムなんて、

入力をトリガーにまさに外道の画像がポップアップする、とか言う非常にくだらないプログラムですからね

そんな感じで、プログラミングは難しくなんてないですし、

私のような恥をかなぐり捨てて頭チキンプログラムを晒している人もいるのです

ですので、プログラミングをためらっている人も、Qiitaに投稿することをためらっている人も、

私は色々な人の話を聞きたいので、是非やってみましょう！

**別に頭チキンプログラムはマネしなくて結構です**