[英]Interesting “Hello World” Interview
我們在辦公室面試時會問這樣一個問題。 為了保持一致性,我將其上下文限制為 python。 我確定還有其他答案,但我真的只對 python 答案感興趣。
給我寫一個名為 function 的名字say
,當這樣調用時:
>>> say('Hello')('World')
它只打印(不返回):
>>> say('Hello')('World')
Hello World
>>>
今天面試后我們進行了元討論,我說我一直希望申請人能回答以下問題。
def say(x):
print "Hello World"
return lambda a:None
我意識到有可能通過將lambda
function 替換為某種返回None
但我已經挖掘並且似乎找不到比lambda a:None
短的內置函數來進一步縮短此時間
所以這里的整體問題是......
你能想出一種方法來縮短這個時間,比如減少整體字符(忽略換行符)。 任何導入語句都計入您的字符數。 (52 個字符)
更新
(39 個字符)
>>> def p(x):
... print "Hello",x
>>> say=lambda x:p
>>> say("Hello")("World")
Hello World
>>>
Python 3 個答案(48 個字符)
>>> def say(x):
... return lambda a:print("Hello World")
>>> say("Hello")("World")
Hello World
>>>
Python 2.x 答案
明顯的答案實際上並不重要,因為它返回字符串而不是打印它:
>>> say = lambda x: lambda y: x + " " + y
>>> say('Hello')('World')
'Hello World'
這個是 45 個字符,包括換行符:
def p(x):
print "Hello World"
say=lambda x:p
此方法將其減少到 41 個字符,但它看起來有點奇怪,因為它使用一個參數而不是另一個參數:
def p(x):
print "Hello",x
say=lambda x:p
Python 3.x 答案
36 個字符:
>>> say=lambda x:lambda y:print(x+" "+y)
>>> say('Hello')('World')
Hello World
38 個字符:
>>> say=lambda x:print(x,end=' ') or print
>>> say('Hello')('World')
Hello World
def say(x):
print x,
return say
至少在 Python 3 中, print
是返回None
的 function ,所以你可以這樣做:
def say(x):
return lambda a: print ('Hello World')
或(保存更多字符):
say=lambda x:lambda y:print("Hello World")
say = lambda y:(lambda x:print(y+' '+x))
say('Hello')('World')
hello world
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.