codonでpythonコードがそのまま動かなかったもの
書きなぐりです。from pythonで使えるものもない扱いにしています(遅そうだったので)。
存在しない
decimal
fractions
array
そもそもlistが型固定になっている
sqlite3
queue
競プロなら普通にcollections.dequeを使えばok
io
numpyのbase_pepr
numpyのpolydiv
collections.dequeのreverse関数
functools(cache,lru=cache,reduce等)
strのmaketrans
strのformatや%を使う書式
f-stringとかを使えばok
int.bit_length()
int.__ctlz__()で自作可能
64 - abs(self).__ctlz__()
int.bit_count()
別名(int.__ctpop__()やint.popcnt())で実装あり
sys.stdin.readline
sysのsetrecursionlimit
やらなくていいらしい
sysのset_int_max_str_digits
そもそもintが多倍長じゃない
pow(a,-1,m)
素数ならばpow(a,p-2,p)でok そうでないならば拡張ユークロッドの互除法を書く
exit()
sys.exit()で代替
math.dist()
文法エラー
リスト内包表記でforの前にスペースがない
if(hoge == fuga)のように、 ifの直後にスペースがない
whileも同様
generatorがアンパックできない(a,b = map(int,input().split())とか)
listに変換したらok
genetatorに対するin演算子
静的な型
リストに複数の型を入れられない
リスト等をタプルに変換できない
タプルはcodonではコンパイル時に長さ、型が決定している必要がある。
タプル以外を関数に対してアンパックできない
よくあるのだと、print(*list)とかzip(*list)とか
整数で定義した変数に小数を入れようとしている、その逆 等
NoneをOptional型じゃないものに入れられない
code:python
def test(tmp:int=None) -> int:
if tmp is None:
z = 30
else:
z = tmp
return z
(自明にCEなもの以外は)REになる
こんな感じに変えるとok
code:python
def test(tmp:Optionalint=None) -> int: if tmp is None:
z = 30
else:
z = tmp
return z
定義しただけのdefaultdict
使われてないとkeyの型を推論できない。
使われてたらok
listとかsetとかdictとかは、(型なしで)定義だけして使わなくてもエラーにならない。
その他
formatが壊れている
ジャッジを修正する依頼を提出済み
ジャッジを修正していただきました、AtCoder運営様ありがとうございました🙇🙇🙇
ローカルで動かない時は
sudo locale-gen en_US.UTF-8
を実行(ubuntu,WSL)
mod,divの仕様がpythonと異なる
高速化のため。(llvmで一命令になる)
@extendでpythonと同じ仕様に変更できるっぽい。
コンパイルオプションで制御可能。
import internal.pynumricsでもいいらしい
オーバーフローする
標準のintは符号付き64bit
自分で定義したbit長の整数も使える。
powのmodが大きすぎると、オーバーフローする
(mod-1)^2が符号付き64bit整数の範囲を超えると危険
文字列はASCII文字のみサポート
将来のアップデートでUnicode文字に対応するらしい。
小数について、小数点以下の桁数がやけに小さい
出力の際にフォーマットして少数の出力桁数を決めておく
または、@extendでstrへの変換を上書きし、表示桁数を増やしておく
もとからある関数を保存しておいて...みたいなやつ
code:python
map_old = map
def map(f,*args):
return list(map_old(f,*args))
やり方がないわけではないらしい