Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expander.pyでdiscardが最後に追加されるためコンパイルできない #39

Open
forest1102 opened this issue Jul 31, 2021 · 2 comments

Comments

@forest1102
Copy link

forest1102 commented Jul 31, 2021

以下のようなNimのコードをexpander.pyを使って展開させると最後にdiscardが追加されるためコンパイルエラーが起きる
またこのようなことが競技プログラミング中に起きるとパフォーマンスに影響が出るためこのような点を減らして欲しい
問題が起きた際に対応しやすいようRelease機能を使ってバージョン管理してほしい

import sequtils,strutils,sugar, algorithm, tables
proc scanf(formatstr: cstring){.header: "<stdio.h>", varargs.}
proc getchar(): char {.header: "<stdio.h>", varargs.}
proc nextInt(): int = scanf("%lld",addr result)

proc solve(A:int, B:int):string = ""

proc main():void =
  var A = nextInt()
  var B = nextInt()
  echo solve(A, B)
  return

main()

出力

import sequtils
import strutils
import sugar
import algorithm
import tables
proc scanf(formatstr: cstring){.header: "<stdio.h>", varargs.}
proc getchar(): char {.header: "<stdio.h>", varargs.}
proc nextInt(): int = scanf("%lld",addr result)
proc nextFloat(): float = scanf("%lf",addr result)
proc nextString(): string =
  var get = false
  result = ""
  while true:
    var c = getchar()
    if int(c) > int(' '):
      get = true
      result.add(c)
    else:
      if get: break
      get = false
template cfor(init, comp, incr, body: untyped) =
  block:
    init
    while comp:
      body
      incr

template times(n: int, body: untyped) =
  for _ in 0..<n:
    body

proc `$` [T](x: seq[T]): string = x.mapIt($it).join(" ")
proc `ceilDiv`[T: SomeInteger](x, y: T): T = x div y + ord(x mod y != 0)


proc solve(A:int, B:int):string =
  if A > 0 and B == 0:
    return "Gold"
  elif A == 0 and B > 0:
    return "Silver"
  else:
    return "Alloy"

proc main():void =
  var A = nextInt()
  var B = nextInt()
  echo solve(A, B)
  return

main()
  discard

エラー
Error: invalid indentation

@chaemon
Copy link
Collaborator

chaemon commented Jul 31, 2021

ご指摘ありがとうございます。修正しました。
自分のテンプレートではたまたま最後のところを一段インデントしていて通っていたので、気づきませんでした。

せっかく使っていただいているのにご迷惑おかけして申し訳ありません。

バージョン管理についてはあまり良くわかっていませんので、近日中に勉強して体制を整えます。
本ライブラリを使ってくださっていること大変感謝しておりますので、これからもよろしくおねがいします。

@forest1102
Copy link
Author

本ライブラリはAtcoderをする上で必要不可欠なほど役立っているので、とても感謝しております。これからもよろしくお願いします

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants