初めに
先日AtCoderで茶色になったのでアウトプットとして書いてみます。
技術的なことは他の方がたくさん書いているので、使用しているユーザースニペットについて書いてみようと思います。
スニペットとは
あらかじめ書いて登録したコードを短いキーワードで呼び出せる機能です。
詳しくはこちらの記事を参考にしてください。
こちらのサイトを使えば簡単にスニペット用コードが作れます。
ファイル
-> ユーザー設定
-> ユーザースニペット
から編集できます。
私が使っているスニペット
少し長いので分割しながら解説します。
まずはいわゆるテンプレです。
各種import、modなどの定数の定義など。
prefixをmainにすると他と競合するのでmaiにしてます。
python.json
"main": {
"prefix": "mai",
"body": [
"import sys",
"inputSys = sys.stdin.readline",
"# sys.setrecursionlimit(10**7)",
"from copy import deepcopy",
"import itertools",
"import bisect",
"import math",
"from functools import lru_cache",
"import string",
"mod = 998244353",
"mod2 = 1000000007",
"inf = float(\"inf\")",
"minf = -float(\"inf\")",
"def YesNo(flag: bool, yes=\"Yes\", no=\"No\"): print(yes) if flag else print(no)",
"\n\n\n"
]
},
次は入出力関連です。
input()
の代わりにsys.stdin.readline()
を使用しています。改行コードが残るので注意。split()
を使うと消えます。
python.json
"print": {
"prefix": "p",
"body": "print($0)"
},
"input": {
"prefix": "inp",
"body": "inputSys().rstrip()\n"
},
"intInput": {
"prefix": "intin",
"body": "int(inputSys())\n"
},
"s=input": {
"prefix": "si",
"body": "s = inputSys().rstrip()\n"
},
"n=intIn": {
"prefix": "ni",
"body": "n = int(inputSys())\n"
},
"hw=mapIn": {
"prefix": "hw",
"body": "h, w = map(int, inputSys().split())\n"
},
"mapInt": {
"prefix": "mi",
"body": "map(int, inputSys().split())\n"
},
"listMapInt": {
"prefix": "lsmi",
"body": "list(map(int, inputSys().split()))\n"
},
"listInput": {
"prefix": "lsin",
"body": "list(inputSys().rstrip())\n"
},
"splitInput": {
"prefix": "splitin",
"body": "inputSys().split()\n"
},
最後はstring関連です。
aからzまで手打ちしたらタイポしてWA出して以来使っています。地味に便利です。
python.json
"az": {
"prefix": "az",
"body": "a_z = string.ascii_lowercase"
},
"AZ": {
"prefix": "AZ",
"body": "A_Z = string.ascii_uppercase"
},
"aZ": {
"prefix": "aZ",
"body": "a_Z = string.ascii_letters"
},
"0-9": {
"prefix": "zn",
"body": "zero_nine = string.digits"
},
終わりに
つたない記事ですが読んでいただきありがとうございました。
スニペットを使用してからコーディングがかなり快適になったので皆さんもぜひ自分好みのスニペットを作ってみてください。