OH GODS NO !! 당신은 Doorknob으로 우리를 떠날 수 없습니다! 어디서나 넷핵이 될 것입니다! - 전도 1d 에 의해 Geobits
글쎄, 실망하지 못했습니다 ...
소개
(노출에 신경 쓰지 않거나 탭 폭발 증후군 이있는 경우이 섹션을 건너 뛸 수 있습니다 )
Nethack (및 Rogue 및 동일한 로그와 유사한 장르의 유사한 게임) 의 특징적인 메커니즘 중 하나는 식별 시스템 입니다. 게임을 시작할 때 시작 인벤토리의 항목 만 "공식적으로 식별"됩니다. 다른 물체의 대다수는 알 수없는 것으로 시작됩니다. 예를 들어, "반사 방패"는 식별하기 전에 "광택 된은 방패"로 처음 표시됩니다.
"광택 된은 방패"는 단지 반사 의 방패 일 수 있지만 이것은 두 가지 다른 경우에 흥미로운 결과를 가져옵니다.
일부 항목은 서로 다르지만 동일한 "모양"을 갖습니다. 당신이 발견 한 경우 예를 들어, " 회색 돌을 의 :"그것은 네 가지 중 하나가 될 수 싯 돌 돌 (쓸모없는)하는 시금석 (유용 할 수 있습니다)하는 천연 자석 (이 톤 무게 심각하게 저당 당신 때문에 당신 떨어 뜨릴 수 없음) 또는 운석 (매우 도움이되고 게임 승리에 거의 필요).
많은 아이템 (스크롤, 지팡이, 반지, 주문서, 갑옷 등)은 무작위로 나타납니다. 이것이 의미하는 것은 물약이 가질 수있는 가능한 apperances의 세트 목록이 있다는 것입니다. 예를 들어, [ 황금 물약 , 문양 물약 , 탄산 물약 , 적자색 물약 등]. 이러한 모습은 무작위 실제로 (무엇에 할당 된 치유의 묘약 , 마비의 물약 , 보이지 않는 볼의 물약 , 다형의 묘약 등).
이는 것을 의미 육각형 부적은 수 개의 게임 (인명의 부적)에 당신의 인생을 저장 하고, 죽음에 다음 (교살의 부적)을 질식 .
당연히 이것은 아이템 식별이 게임의 중요한 부분이되게합니다. 아이템은 "공식적으로 식별"될 수 있습니다. 즉, 아이템이 확실하게 특정 아이템으로 표시됨을 의미합니다 (예 : 발견 한 모든 보석 막대 는 몬스터를 만드는 막대로 표시됩니다 ). 이것은 주로 스크롤 또는 철자법 을 통해 이루어집니다 . 그러나 일반적으로 공급 부족으로 인해 우리는 ...
비공식적 식별. 이 의미는 걸 확신 (또는 일부) "공식적으로"아직 확인 된 특정 미확인 항목이 특정 유형의 것을 (또는 그것은 단지 몇 가지 유형 중 하나가 될 수있다),하지만 당신은하지 않았습니다. 이것은 여러 가지 방법을 통해 수행 할 수 있습니다 : 지팡이에 대한 조각 테스트 , 반지에 대한 싱크 테스트 또는 가장 일반적인 방법 ...
... 가격 식별 ! 이 도전에 관한 것입니다.
간단히 말해서, Dungeons of Doom 전역 에 상점이 있습니다 (예, 상점 주인 은 지하 지하 감옥에 상점을 설치하는 것이 좋습니다. 왜 그런지 묻지 마십시오). 이 상점에서는 여행 중에 만나는 다양한 품목을 사고 팔 수 있습니다. 물건을 사거나 팔 때, 상점 주인은 먼저 그가 당신에게 물건을 팔거나 당신에게서 물건을 살 것인지 얼마를 알려줄 것입니다. 특정 품목은 특정 가격 이 보장되므로이를 사용 하여 특정 유형의 품목 을 비공식적으로 식별 할 수 있습니다 .
빛 의 두루마리 와 같은 일부 항목 은 특정 금액을 지불해야하는 유일한 항목이므로이를 명확하게 식별 할 수 있습니다. 그러나 대부분의 품목은 같은 등급의 다른 품목과 가격 그룹을 공유하므로 가능성을 좁힐 수 있습니다 (아직 유용함). 그러나 품목의 구매 / 판매 가격은 여러 변수 (예 : 카리스마 통계) 의 영향을받습니다 . 따라서 위의 차트.
내가 Nethack을 좋아한다고 말할 수 있습니까?
입력
입력은 현재 플레이되는 (vanilla, 3.4.3) Nethack 게임으로 제공됩니다 :
"For you, most gracious sir; only 177 for this scroll labeled VERR YED HORRE."
--More--
------------
| . ---------
| | ---------- | ^ |
| .## ################. +# #. .#
| | # | _|# #---------#
| | ### ##.< |# #### #
| .#########################----------# # #
------------ ### # ############# # # #
# # ----------- # # # ####
### ###| |### # # #----------
# #. |# ### # # #|.???????|
## | |# #--------# #|.??@????|
----.----###############. |# #| |# #-@???????|
|.......+# | |# #. |# ----------
|.......| | .# | |#
|......>| ----------- | +#
--------- --------
Wizard the Evoker St:12 Dx:14 Co:11 In:16 Wi:12 Ch:10 Chaotic
Dlvl:2 $:0 HP:11(11) Pw:0(8) AC:9 Exp:1 T:11
이는 여러 속성이 보장됨을 의미합니다.
그것은 것입니다 항상 긴 24 행합니다.
각 줄의 길이 는 항상 80 자 이하 여야합니다.
마지막 두 번째 줄은 다음과 같은 " 토큰 " 으로 구성됩니다 . 플레이어 이름과 제목 ( " foo the bar "형식), 속성 목록 (단일 공백으로 구분) 및 플레이어 정렬 ( 합법적, 중립적 또는 혼돈). 각 토큰 은 가변 수의 공백으로 구분됩니다. 1
특성 목록은 항상
St:* Dx:* Co:* In:* Wi:* Ch:*
이며*
문자는 3에서 25 사이의 정수를 나타냅니다. 2 (여기서 관심있는 지점은 마지막 통계 인 카리스마이며 가격을 계산해야합니다.)첫 번째 줄은 항상 상점 관련 메시지 (구체적으로 품목을 구매하거나 판매 할 때 표시되는 메시지)로 구성됩니다. 또한이 항목은 식별되지 않은 이름이 지정되지 않은 단일 스크롤이어야합니다. 품목을 구매하는 경우 다음과 같습니다.
"For you, {TITLE}; only {PRICE} for this scroll labeled {LABEL}."--More--
그리고 팔기 위해 :
{SHK} offers {PRICE} gold pieces for your scroll labeled {LABEL}. Sell it? [ynaq] (y)
여기서 "변수"
{curly braces}
는 다음과 같습니다.{TITLE}
는 항상 " lady "또는 " sir " 와 연결된 " good ", " honed ", " most gracious "또는 " esteemed "중 하나 입니다.{PRICE}
항상 정수입니다.{LABEL}
항상 다음 중 하나입니다 ( source ).ZELGO MER JUYED AWK YACC NR 9 XIXAXA XOXAXA XUXAXA PRATYAVAYAH DAIYEN FOOELS LEP GEX VEN ZEA PRIRUTSENIE ELBIB YLOH VERR YED HORRE VENZAR BORGAVVE THARR YUM YUM KERNOD WEL ELAM EBOW DUAM XNAHT ANDOVA BEGARIN KIRJE VE FORBRYDERNE HACKEM MUCHE VELOX NEB FOOBIE BLETCH TEMOV GARVEN DEH READ ME
{SHK}
항상 다음 중 하나입니다 ( source ).Skibbereen Ballingeary Inishbofin Annootok Abitibi Kanturk Kilgarvan Kesh Upernavik Maganasipi Rath Luirc Cahersiveen Hebiwerie Angmagssalik Akureyri Ennistymon Glenbeigh Possogroenoe Aklavik Kopasker Lahinch Kilmihil Asidonhopo Inuvik Budereyri Kinnegad Kiltamagh Manlobbi Tuktoyaktuk Akranes Lugnaquillia Droichead Atha Adjama Chicoutimi Bordeyri Enniscorthy Inniscrone Pakka Pakka Ouiatchouane Holmavik Gweebarra Clonegal Kabalebo Chibougamau Lucrezia Kittamagh Lisnaskea Wonotobo Matagami Dirk Nenagh Culdaff Akalapi Kipawa Sneem Dunfanaghy Sipaliwini Kinojevis
이 메시지는 다른 줄로 나 may 수 있지만 두 줄을 넘을 수는 없습니다. 삼
처음 몇 줄을 제외하고, 화면의 나머지 부분에 대한 모든 베팅은 해제되었습니다. Nethack은 대부분의 ASCII 문자 집합을 사용 합니다. 안전하게 추측 할 수있는 유일한 것은 입력이 순전히 ASCII 일 것입니다 (그러나 어쨌든 3-22 행을 버릴 수 있기 때문에 이것은 중요하지 않을 것입니다).
입력이 함수 인수로 취해지는 경우 위의 예와 같이 정확하게 입력됩니다 (줄 바꿈으로 구분). STDIN을 통해 입력하면 24 줄의 연속 입력 라인이 제공됩니다 (위와 같이). 입력에 후행 줄 바꾸기를 원하는지 여부를 선택할 수 있습니다. 입력에는 후행 공백이 없어야합니다.
산출
#name
방금 가격 ID로 지정한 스크롤 로 출력해야합니다 . 내가 사용하는 이름 지정 시스템 (및 다른 사람들이 사용하는 것을 보았습니다)은 다음과 같습니다.
두루마리가 특정 두루마리 (명확하고, 가벼우
#name
며 , 무기 마법 부여)로 명확하게 식별된다면, 그렇게합니다. 다음 기본 가격이 스크롤되는 경우입니다 ( 아래 기본 가격 계산 방법 참조). 20-> 식별, 50-> 라이트, 60-> 무기 마법.그렇지 않으면, 스크롤 모양의 처음 세 글자를 가져 오거나 첫 글자가 3 자 미만이면 가져갑니다. 예를 들어,
ZELGO MER
가되고ZEL
,VE FORBRYDERNE
되고VE
, 등 이됩니다 .이 공간을 스크롤 한 다음 기본 가격과 연결하십시오. 예를 들면 다음과 같습니다ELB 300
.기본 가격이 두 가지 가능성 중 하나 일 수있는 경우, 보통 특정 가격 슬롯에 상품을 배치 할 수있는 가격이 제공 될 때까지 상품을 구매하거나 판매하려고합니다. 그러나이 도전에서는 그렇게 할 수 없으므로 가능한 두 가지 기본 가격을 슬래시 (
/
)로 구분하십시오. 예를 들면 다음과 같습니다HAC 60/80
.
다음은 품목의 기본 가격을 구매 가격으로 변환하는 공식입니다.
품목의 기본 가격으로 시작
다음을 통해 계산 된 33 % "식별되지 않은 할증료"가능성
price += price / 3
같은 방법으로 계산 된 33 % "흡수기 표시"의 다른 기회 (실제로 확률은 아니지만이 도전의 목적에 따라 다름)
카리스마 수정 자이며 다음과 같이 적용됩니다.
Ch 3-5 6-7 8-10 11-15 16-17 18 19-25 Mod +100% +50% +33% +0% -25% -33% -50% Code p *= 2 p += p/2 p += p/3 --- p -= p/4 p -= p/3 p /= 2
기본 가격-> 판매 가격에 대한 공식은 다음과 같습니다.
품목의 기본 가격으로 시작
이것을 2 또는 3으로 나눕니다 (각각 "정상"또는 "흡입 마크 업"; 무작위는 아니지만이 문제의 목적을위한 것임)
를 통해 계산 된 추가 25 % 감소 확률 4
price -= price / 4
나누기는 정수 나누기이므로 각 단계 의 결과 가 반올림됩니다. (출처 : wiki 및 약간의 소스 코드 파기.이 공식을 뒤집는 것이 당신의 일입니다.)
마지막으로, 가능한 구매 가격 (Charisma stat로 그룹화)을 표시하고 특정 기본 가격으로 스크롤 가격을 판매하는 편리한 댄디 ASCII 차트가 있습니다.
Base Ch<6 6-7 8-10 11-15 16-17 18 19-25 Sell
20 40/52/68 30/39/51 26/34/45 20/26/34 15/20/26 14/18/23 10/13/17 5/6/8/10
50 100/132/176 75/99/132 66/88/117 50/66/88 38/50/66 34/44/59 25/33/44 12/16/19/25
60 120/160/212 90/120/159 80/106/141 60/80/106 45/60/80 40/54/71 30/40/53 15/20/23/30
80 160/212/282 120/159/211 106/141/188 80/106/141 60/80/106 54/71/94 40/53/70 20/26/30/40
100 200/266/354 150/199/265 133/177/236 100/133/177 75/100/133 67/89/118 50/66/88 25/33/38/50
200 400/532/708 300/399/531 266/354/472 200/266/354 150/200/266 134/178/236 100/133/177 50/66/75/100
300 600/800/1066 450/600/799 400/533/710 300/400/533 225/300/400 200/267/356 150/200/266 75/100/113/150
(위의 차트는 가능한 모든 판매 가격을 나열한다는 점을 제외하고는 위키의 차트와 동일하지만 위키 차트는 가능한 4 가지 판매 가격 중 2 가지를 포함하지 않습니다. 아니요, 수동으로 해당 차트를 만들지 않았습니다. 이 Ruby 스크립트로 생성되었습니다. .)
테스트 사례
입력:
"For you, honored sir; only 80 for this scroll labeled LEP GEX VEN ZEA."
--More-- # #
---------------- -----
| | ------------####+ |
----- | -##############+ .# | |
| .###########| > |# # | | ##. |
| | #------------.---# ##. | # -----
-+--- ################## ----.-------### #
#### ### # # #
# # # ### ###
### ### # # #
# # # ### -----|--
-----.--- ### ----+---# |...@..|
| | # | |# |???+??|
| < .# ## ##+ | |+?????|
| |# ------.------- | | |??]?@?|
---------### | | | | --------
# # | | --------
###| | #
#+ |
--------------
Wizard the Evoker St:11 Dx:15 Co:9 In:20 Wi:9 Ch:11 Chaotic
Dlvl:7 $:0 HP:11(11) Pw:1(8) AC:9 Exp:1
산출: LEP 60/80
입력:
"For you, most gracious sir; only 80 for this scroll labeled DAIYEN FOOELS."
--More-- #
------------ ----- -------
----- | | | | | |
|!)%| | | --------------- | | #- |
|*[@| | .#####| < |#####. | ###| |
|?(?| ---------.-- #+ |# | | # | |
|[!(| ## | |# | +#### #. .#
|.@.| ##################. +# ---.- #| |#
---|- ### ---------------# ## #-------#
## # ###### # # #
# ### # # # #
## # # # # #
------ ##### # # # #
| | -.---- # # # #
| .##### |^ | #### # # #
| | # | | ---- #-----------.---- # #------
| | ###| | | | #. > | # #| |
------ #. | | | | .## #| |
| | ---- | | #. |
------ ---------------- ------
Wizard the Evoker St:11 Dx:14 Co:16 In:15 Wi:10 Ch:9 Chaotic
Dlvl:6 $:0 HP:11(11) Pw:9(9) AC:9 Exp:1
산출: enchant weapon
입력:
Aklavik offers 113 gold pieces for your scroll labeled GARVEN DEH. Sell it?
[ynaq] (y)
----- ------ --------- -------
| | | | # ##. | |.?)%/|
| | ##. | ----- # | | |.@!=*|
|< | # | | # ##. .#####+ > |# #-.*?@[|
| .##### | | ------------ # | { |# |^ |# #|.=%)+|
---.- | | | .#### | |# ---------## #-------
## -.---- #. | | |# # ### #
# ######## #| .## | |# ## #
### # #------------ # -----# #### #
# ####### ########################## #
# # # ###----.--#
# ### # # #| |#
--.---- ########################################### #. |#
| | #----------.-# | |#
| | #| |# -------
| | #| .#
| |########| |
------- ------------
# #
Wizard the Evoker St:9 Dx:14 Co:11 In:19 Wi:10 Ch:12 Chaotic
Dlvl:4 $:0 HP:11(11) Pw:5(9) AC:9 Exp:1 Satiated
산출: GAR 300
입력:
"For you, good lady; only 67 for this scroll labeled VE FORBRYDERNE."--More--
-------
##| |
------------ # | |
|+[!/!?%[?)| ### | | --------
|[)(!/+]?!@| # # | | ##+ |
|.......@..| -------------- ### | < | ## | |
--------+--- #| | # | | # | > |
# ###| .#### --.---- ### #- |
# ###. | # # ###| |
# #### ---.---------- # ######. |
# #### ## # ### --------
# #### # # #
# #### ######################## ###
### #### ----+---- #
# # #### | .##
----.------#### | ^ |
| +#### | > |
| | | ^ |
----------- ---------
Wizard the Evoker St:18 Dx:18 Co:16 In:20 Wi:20 Ch:18 Chaotic
Dlvl:4 $:150 HP:11(11) Pw:5(7) AC:9 Exp:1
산출: VE 100
입력:
Droichead Atha offers 5 gold pieces for your scroll labeled XIXAXA XOXAXA
XUXAXA. Sell it? [ynaq] (y)
------------
----- | .#
| .### ----------- #. { |#
----- | | # | | ###| |#
| .# #. | # | | # ---------+--#
| | ###-|--- | .## ### ## #
| | # # # | | # # # #
| -##### # | | #### ############ #
|> | ## # ---------+- ## -.---------- # ----------
| .#### ### ## #####| | # |.*??/?)*|
----- # # # # | | # |@*)%!)]%|
### ### ###### | | # |.=)!%*!!|
# # # # | | ##+@*[%)(%?|
##################### | | |.]?*?)%%|
-----+---.----##########. | |.%)%!!!%|
| +## ------------ ----------
| < | #
| |
--------------
Wizard the Digger St:11 Dx:9 Co:14 In:6 Wi:6 Ch:9 Lawful
Dlvl:3 $:0 HP:15(15) Pw:0(1) AC:9 Exp:1
산출: identify
(나는 그의 이름에 공백이있는 가게 주인을 찾을 수 없기 때문에 다른 모든 가게 주인 이름을 제거한 상태로 Nethack을 수동으로 컴파일해야했습니다 ...)
규칙
1 : 이것은 Nethack 게임에서 반드시 사실은 아니지만 단순성을 위해 이것을 가정합니다.
2 : 다시, 항상 사실은 아닙니다. 강도는 18/01에서 18 / **까지 될 수 있지만 처리 할 필요는 없습니다.
3 : 더 많은 과도한 단순화. 예를 들어, 상점 주인이 당신을 "쓰레기"또는 "가장 유명하고 신성한 생물"이라고 부르는 것이 가능하지만, 그 어떤 것도 처리 할 필요가 없습니다.
4 : 더 높은 가격이 나올 때까지 스마트 폰이 아이템을 반복해서 판매함으로써 돌아 오는 것.