LoginSignup
0
0

More than 1 year has passed since last update.

競技プログラミング用ユーザースニペット(Python)

Posted at

初めに

先日AtCoderで茶色になったのでアウトプットとして書いてみます。
技術的なことは他の方がたくさん書いているので、使用しているユーザースニペットについて書いてみようと思います。

スニペットとは

あらかじめ書いて登録したコードを短いキーワードで呼び出せる機能です。
詳しくはこちらの記事を参考にしてください。
こちらのサイトを使えば簡単にスニペット用コードが作れます。

ファイル -> ユーザー設定 -> ユーザースニペットから編集できます。
スクリーンショット (451).png

私が使っているスニペット

少し長いので分割しながら解説します。

まずはいわゆるテンプレです。
各種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"
},

終わりに

つたない記事ですが読んでいただきありがとうございました。
スニペットを使用してからコーディングがかなり快適になったので皆さんもぜひ自分好みのスニペットを作ってみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0