yukicoderの問題を解いていて、一切進歩していないんだなーと理解した、私です
今回はその辺りを踏まえて、タイトル通りに雑談をメインとした内容です
こんなアホでもプログラミングはできるから、もしやることが無くて暇だったら挑戦しよう!
とプログラミングを始めることに抵抗がある人へ向けた激励・・・出来たらイイナー
では、さっそく進めましょう
Qiitaにプログラムを書く理由
正直、私がQiitaにプログラムを書いているのは、別に意見が欲しいとかではないです
単純な話として、yukicoderにしてもCheckiOにしても解答って出てくるわけですよ
CheckiOは解答に投票する機能まであって、良いプログラムが書きたいならコピーすればいいわけで・・・
速度とか鮮やかさなどの議論をしたいなら、それを許可を貰って掲載しますしね
ですから、態々ここにプログラムを書いているのは、
私が何を考えて何をしたくてこの形にしたのか、を少しでも伝えられたらと思って書いているのです
そうじゃないと態々書く意味ないですし・・・
厚かましいとは思いますが、むしろ意見をくれるのなら私のプログラムを基に改造してよ!と思います
で、多分タイトルに問題があるんだと思い、『頭チキンのプログラム』に改名しました
頭チキンなら、糞プログラム書いても許してもらえる・・・はず
わけわかんねぇプログラム書いてんじゃねーよ!とか突っ込みたいのはわかりますがね
ほら、こちらとしても書いている以上、個性が無いと意味ないですしおすし
一つも進歩していない・・・
ChekiOでThe Square Chestという問題があるんですよ
この図から適当な点を指定するから、何個の正方形ができるか答えなさい
という、問題なんですけどスマートな人は超クールな解答をするんだと思います
実際にCheckiOにもすげー書き方をしている人もいました
で、forとifだけ分かればプログラミングができるとか聞いて、
それを真に受けてifとforしか学ばなかった頭チキンの私がどうやって解いたのかと言うと、
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』
と草生やされました
頭チキンですね、笑っても良いですよ
笑った人には以下の権利を差し上げます
こぞって書いてね!
で、そんな私なんですが、yukicoderにNo.297という問題があります
与えられた文字列を操作しても良いので”tree”の数を答えなさい
という問題があります
さて、お気づきの方はおられるでしょう、頭チキンの解答はこれです
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イ 彡彡ィ 彡イ/ ィ_‐- 、  ̄ ̄ ヽ し ま
f彡イ彡彡ィ/ f _ ̄ ヾユ fヱ‐ォ て る
f/ミヽ========<|-'いシ lr=〈fラ/ !フ い で
イイレ、´彡f ヽ 二 _rソ 弋_ { .リ な 成
fノ /) 彡! ィ ノ ̄l い 長
トヾ__ら 'イf u /_ヽ,,テtt,仏 ! :
|l|ヽ ー '/ rfイf〃イ川トリ / :
r!lト、{'ー‐ ヽ ´ ヾミ、 / :
/ \ゞ ヽ ヽ ヽ /
./ \ \ ヽ /
/〈 \ ノ
-‐ ´ ヽ ヽ \\ \ 人
頭チキンが頭チキンたる由縁がここにありますねぇ!
それしかできんのかこの猿ゥ!とか言われそうですが、猿ほど知能よくねぇから!
いやーCheckiOの問題解いたのが、6月ですからね・・・五ヶ月後にも関わらず成果ゼロです
何の成果も得られていない・・・
こうしたことを脱却するために、アルゴリズムの勉強をしているにも関わらず、これですからね・・・
どうすれば脱却できるんですかね・・・コピペですか?コピペを連打すればいいんですか?
初心に帰って、算数から学び直せばいいんですか?
たぶん、全世界のプログラム初心者が一番聞きたいところはここですよ
この辺りの勉強法ですよ
皆さんはどうやって鮮やかなプログラミング技術を学んだんですか?
Fortranの謎
yukicoderにて、Fortranの謎を発見しました
No.591なんですが内容はシンプルで、
目と口を与えるので、()/にはめ込みなさい
という問題です
最初は普通に
implicit none
integer(8) a,b
character(1) e,m,l,n
read(*,*) e
read(*,*) m
write (*,*) "(",e,m,e,")/"
end
と書いていたんですがWAと判定が返りました
どうも『/』という入力を上手く処理できないようです
そこで、私は試しに入力を文字コードに変換して、再度文字に戻す作業をしました
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』と出力されました
うーん謎
結果的に
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に投稿することをためらっている人も、
私は色々な人の話を聞きたいので、是非やってみましょう!
別に頭チキンプログラムはマネしなくて結構です