簡體   English   中英

有趣的“Hello World”采訪

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM