ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Infinite Dictionaries

2022-01-21 21:35:09  阅读:164  来源: 互联网

标签:slot Dictionaries value test length pair key Infinite


原题连接:Infinite Dictionaries - C语言网

A dictionary is a set of key-value pairs, for example:

 

{'color':'red', 'price':2, 7:'test', 100:-100}

 //一个字典是一组关键对,例如{'color':'red', 'price':2, 7:'test', 100:-100}

As you can see, keys and values can be strings or integers. What’s more, values can also be dictionaries or variable references. Here is the formal definition of terms that will be used soon:

//你可以看到,关键词和价值可以是字符串或者是数字。另外,价值也可以是字典或者变化的指代。下面是将要用到的东西的正式定义:

 

key   ::=      INTEGER | STRING

value ::=      INTEGER | STRING | dict

pair  ::=      key ':' value

dict  ::=      '{' [pair (',' pair)*] '}'

var   ::=      'a'|'b'|'c'|...|'z'

slot  ::=      var('[' key ']')*

lvar  ::=      slot

rvar  ::=      slot | value

 

Here ('[' key ']')* means zero or more subscripts, [pair (',' pair)*] means zero or more key-value pairs.

//('[' key ']')*表示零或者更多的subscript,[pair (',' pair)*]表示零或者更多的关键价值对。

 

Strings are always enclosed by single quotes ('') and consists of up to 10 lower-case letters. Integers always have absolute values of no more than 1000.

//字符串总被单引号括起来并且由至多10个小写字母组成。整数的绝对值不大于1000.

You can insert spaces anywhere, except inside strings or integers. For example, { 'a':-1} and {'a' : -1   } are the same, but {'a b':1} and {'a':- 1} are both illegal.

 //你可以在任何地方加空格,除了字符串和整数之间。

例如{ 'a':-1} and {'a' : -1   }是一样的,但是 {'a b':1} and {'a':- 1}都不合法。

Your task is to execute a series of commands and print the results. There are 3 kinds of commands:

 //你的任务是计算一些指令并且输出结果。一共有三种指令:

1. Assignment: <lvar> = <rval>

 //Assignment:

After assigning a slot to a slot (rather than a value), the left-hand slot will be holding a reference to the right-hand. For example, After executing the following commands, b[1][0] is 1, rather than 0:

// 

a = {0:0}

b = {}

b[1] = a

a[0] = 1

 

Slots must be assigned before it is read or subscripted, and integers and strings cannot be subscripted. Consider the following comammd list:

 

c = {}

c[0] = 3

c[1] = c[0]

d[0] = 'i'

c = d

d = c[1]['a']

c[2][2] = 2

 

The first three commands are legal, but the next two are both illegal because slot d must be assigned before it is read or subscripted. The last three are also illegal.

 

2. Length: length(<slot>)

 

Output the number of key-value pairs in the slot. Note that nested pairs are not counted. For example:

 

a = {0: {0:0, 1:1}}

length(a)

 

will output 1, not 3. In this command, it is guaranteed that <slot> is storing a dictionary, not a string or an integer.

 

3. Infinity test: test(<slot>)

 

If the slot can be subscripted indefinitely, output 1. Otherwise, output 0. For example, after executing the following command list:

 

d = {}

d[0] = d

 

Then d is infinite, since d[0][0][0][0][0][0]... is always d. In this command, it is guaranteed that <slot> is storing a dictionary, not a string or an integer.

 

输入

 The input contains at most 10000 lines of commands, each line will be non-empty and will contain no more than 300 characters. All the commands are legal.

输出

 Print the output (one line for each length/test command).

样例输入复制
<span style="color:#333333"><span style="color:#333333">c = {}
d = {'color': 'red', 'price': 2, 7: 'test', 100: -100}
length(d)
d[7] = {'this': 'is', 'a': 'book'}
length(d)
d[8] = {'this' : 'is', 'another' : {'a' : 'book', 'b': 'book2'} }
length(d)
c[7] = c
test(c)
test(d)
length(c)
d[0] = c
length(d)
test(d[0])
</span></span>
样例输出复制
<span style="color:#333333"><span style="color:#333333">4
4
5
1
0
1
6
1</span></span>

标签:slot,Dictionaries,value,test,length,pair,key,Infinite
来源: https://blog.csdn.net/cxj20021126/article/details/122613737

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有