わかさぎのブログ

プログラミング、Atcoderの勉強とか

Python

python サビツキゴレイフィルターの実装

import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy import linalg df=pd.read_csv("R895_Connector.csv") y=df.iloc[:,1].values.tolist() win=251 poly=7 def sav_gol(y,win,poly): n=win//2 m=poly X=[] for i in range…

AtCoder Beginner Contest 204 C - Tour

BFS N,M=map(int,input().split()) ab=[] for i in range(M): tmp=list(map(int,input().split())) ab.append(tmp) from collections import defaultdict,deque graph=defaultdict(list) for i in range(M): l=ab[i][0] r=ab[i][1] graph[l].append(r) #grap…

AtCoder Beginner Contest 068 Cat Snuke and a Voyage

N,M=map(int,input().split()) ab=[] for i in range(M): tmp=list(map(int,input().split())) ab.append(tmp) from collections import defaultdict graph=defaultdict(list) for i in range(M): l=ab[i][0] r=ab[i][1] graph[l].append(r) graph[r].append…

AtCoder Beginner Contest 116 C - Grand Garden

N=int(input()) H=list(map(int,input().split())) inf=1000 ans=0 def func(L,R): global H,ans if L>=R: return mi=inf for i in range(L,R): mi=min(mi,H[i]) ans+=mi for i in range(L,R): H[i]-=mi zero=[] zero.append(-1) for i in range(L,R): if H[…

julia pythonと違うところ同じところ

違うところ インデックスは1始まり。 for文if文の末尾にコロンをつけない。 for文if文の終わりにendをつける。 for文の変数が複数ある時()が必要。 スライスで例えばa[1:3]とすると右端の3も含むところ(pythonは右端は含まない) juliaには破壊的な演算子がな…

AtCoder Beginner Contest 139 C - Lower

from itertools import groupby N=int(input()) h=list(map(int,input().split())) g=[] for i,j in enumerate(h): if i==0: pass else: if h[i]-h[i-1]>0: g.append(False) else: g.append(True) ans=0 for k,g in groupby(g): if k==True: moji=len(list(g…

AtCoder Beginner Contest 019 B - 高橋くんと文字列圧縮

from itertools import groupby S=list(input()) ans="" for k,g in groupby(S): moji=list(g) kosu=len(moji) char=moji[0] ans+=str(char)+str(kosu) print(ans)

AtCoder Beginner Contest 143 C - Slimes

from itertools import groupby N=int(input()) S=list(input()) count=0 for k,g in groupby(S): count+=1 print(count)

AtCoder Beginner Contest 081 C - Not so Diverse

N,K=map(int,input().split()) a=list(map(int,input().split())) buk=[0 for i in range(1,200001)] for i in a: buk[i]+=1 count=0 for i in buk: if i!=0: count+=1 buk=[i for i in buk if i>0] delete=count-K if delete<=0: print(0) else: div=sorted…

AtCoder Beginner Contest 200 C - Ringo's Favorite Numbers 2

コード N=int(input()) a=list(map(int,input().split())) mod=200 b=[i%200 for i in a] from collections import defaultdict di=defaultdict(int) for i in b: di[i]+=1 result=0 for i in range(200): n=di[i] result+=n*(n-1)//2 print(result) 考え方 …

AtCoder Beginner Contest 058 C - 怪文書

コード from collections import defaultdict N=int(input()) s=[] for i in range(N): tmp=list(input()) s.append(tmp) data=[] for i in s: tmp=defaultdict(int) for j in i: tmp[j]+=1 data.append(tmp) setset=[set() for i in range(len(data))] for …

AtCoder Beginner Contest 073 C - Write and Erase

コード from collections import defaultdict N=int(input()) a=[] for i in range(N): tmp=int(input()) a.append(tmp) di=defaultdict(int) for i in a: di[i]=1-di[i] count=0 for k,v in di.items(): if v==1: count+=1 print(count) 考え方 defaultdict…

AtCoder Beginner Contest 082 C - Good Sequence

from collections import defaultdict N=int(input()) a=list(map(int,input().split())) di=defaultdict(int) for i in a: di[i]+=1 lost=0 for key,kosu in di.items(): #print(key,kosu) if kosu

鹿本 例題15 スプリンクラー

N,M,Q=map(int,input().split()) uv=[[0,0]] for i in range(M): tmp=list(map(int,input().split())) uv.append(tmp) color=[0]+list(map(int,input().split())) s=[0] for i in range(Q): tmp=list(map(int,input().split())) s.append(tmp) class Point()…

AtCoder Beginner Contest 274 D - Robot Arms 2

N,x,y=map(int,input().split()) A=list(map(int,input().split())) M=10000 dp1=[False for i in range(-10000,10001)] dp2=[False for i in range(-10000,10001)] dp3=[0 for i in range(-10000,10001)] dp1[A[0]]=True dp2[0]=True for i in range(1,N): …

AtCoder Beginner Contest 275 C - Counting Squares

s=[] for i in range(9): tmp=list(input()) s.append(tmp) def nagasa(r1,r2): res=(r1[0]-r2[0])**2+(r1[1]-r2[1])**2 ans=pow(res,0.5) return ans zahyou=[] for i in range(9): for j in range(9): if s[i][j]=="#": zahyou.append((i,j)) from itertoo…

AtCoder Beginner Contest 276 C - Previous Permutation

N=int(input()) p=list(map(int,input().split())) def prev_permutation(a: list, l: int = 0, r: int = None) -> bool: if r is None: r = len(a) - 1 for i in range(r - 1, l - 1, -1): if a[i] > a[i + 1]: for j in range(r, i, -1): if a[i] > a[j]: …

AtCoder Beginner Contest 276 B - Adjacency List

N,M=map(int,input().split()) ab=[] for i in range(M): tmp=list(map(int,input().split())) ab.append(tmp) ab.insert(0,[0,0]) data=[[] for i in range(N+1)] for i in range(1,M+1): l=ab[i][0] r=ab[i][1] data[l].append(r) data[r].append(l) del d…

AtCoder Beginner Contest 276 A - Rightmost

S=list(input()) count=-1 for i,j in enumerate(S): if j=="a": count=i+1 print(count)

AtCoder Beginner Contest 276 D - Divide by 2 or 3

提出コード N=int(input()) a=list(map(int,input().split())) from functools import reduce import math def my_gcd(*numbers): return reduce(math.gcd, numbers) gcd=my_gcd(*a) a=[i/gcd for i in a] def prime_factorize(n): a = [] while n % 2 == 0:…

plotlyできれいなグラフを作るplotly-go

import plotly.graph_objects as go #Figureオブジェクト作成fig = go.Figure() #traceを作成trace1 = go.Scatter(x=[1, 2, 3, 4], y=[1, 4, 9, 16]) #traceをFigureに追加fig.add_trace(trace1) #レイアウトの設定fig.update_layout(title='グラフのタイト…

outlookを操作 メール送信画面の表示

import win32com.client outlook = win32com.client.Dispatch("Outlook.Application") mail = outlook.CreateItem(0) mail.to = ''mail.cc = ''mail.bcc = ''mail.subject = ''mail.bodyFormat = 1mail.body = ''''''mail.Attachments.Add ("C:\\Users\\---\…

f文字列

import math val=700val2=4000 print(f"私の戦闘力は{val}です")print(f"円周率は{math.pi: .10f}")print(f"変数は{val2=}") 使いそうなものを3つピックアップ。 基本が一個目 :で書式を指示できる .10fは小数点以下10桁の意味 「変数=」と書くと val=1000…

lambda式

lambda 変数 : 関数 lambda x.y : f(x,y) 無名関数を定義する func = lambda x: x+x y=func(2)print(y) a=[2,3,4] z=list(map(lambda x:x+x, a))print(z) >>> 4[4, 6, 8] 簡単な関数ならこのように一行で定義できる。 ついでにmapの使い方としては map(関数 …

pythonでHDF5ファイルの読み込み

pip install h5py CSVよりも読み込みの速いファイル形式HDF5 ANACONDAなら初めから入っている

for文を逆に回す

reversed()関数を使う enumerate()関数との合わせ技も可能 しかしどちらもリストを引数にしてgeneratorを返り値にする点に注意する。 x = ["my", "unlimited", "sadness"]for i in reversed(x): print(i) x = ["my", "unlimited", "sadness"]for i, e in rev…

配列の要素から文字列検索

普通のやり方 str_match = [s for s in my_list if "ack" in s]print(str_match) __contains__を使ったやり方 str_match = [s for s in my_list if s.__contains__("ack")]print(str_match) 文字列が持つ特殊メソッド 文字列.__contains__("検索したい文字列)…

辞書の操作

リスト二つからzipを使って生成できる a=["john","tanaka","hanako"]b=[132,23,23] di=dict(zip(a,b)) print(di) >>> {'john': 132, 'tanaka': 23, 'hanako': 23} for文と辞書に関して 辞書のテンプレ。keyは文字列 d = {'key1': 1, 'key2': 2, 'key3': 3}fo…

Rubyでpycallを使ってpythonのライブラリを使用するときのtips

なぜかpyenvで入れたpythonをデフォルトにしているとできない。 rubyのほうはrbenvでインストールしたほうにしておくとできる。 まとめ pythonのほうはsystemにする rubyのほうはrbenvでインストールする。 pipでmatplotlibなど入れる

Ubuntuでpython環境構築

ubuntu 20.04 / 18.04 に pyenv をインストールする話 - Qiita ↑でpyenvを入れる。 このままだとpipが入っていないのでpipもインストールする。 pip: Python環境構築ガイド - python.jp