<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ErdosNumbers%2F%EC%9E%84%EC%9D%B8%ED%83%9D</id>
	<title>ErdosNumbers/임인택 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=ErdosNumbers%2F%EC%9E%84%EC%9D%B8%ED%83%9D"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%9E%84%EC%9D%B8%ED%83%9D&amp;action=history"/>
	<updated>2026-05-15T03:30:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%9E%84%EC%9D%B8%ED%83%9D&amp;diff=31687&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=ErdosNumbers/%EC%9E%84%EC%9D%B8%ED%83%9D&amp;diff=31687&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &lt;br /&gt;
 # -*- coding: UTF-8 -*-&lt;br /&gt;
 import unittest&lt;br /&gt;
 &lt;br /&gt;
 def readFile(fileName):&lt;br /&gt;
 	f = file(fileName, &amp;quot;r&amp;quot;)&lt;br /&gt;
 	lines = []&lt;br /&gt;
 	line = f.readline()&lt;br /&gt;
 	while line!=&amp;#039;&amp;#039; :&lt;br /&gt;
 		lines.append(line)&lt;br /&gt;
 		line = f.readline()&lt;br /&gt;
 &lt;br /&gt;
 	f.close()&lt;br /&gt;
 	return lines&lt;br /&gt;
 &lt;br /&gt;
 def extractInfo(lines):&lt;br /&gt;
 	idx = 0&lt;br /&gt;
 	sNum = int(lines[idx])&lt;br /&gt;
 	idx += 1&lt;br /&gt;
 	&lt;br /&gt;
 	sInfo = lines[idx].split()&lt;br /&gt;
 	nPaper = int(sInfo[0])&lt;br /&gt;
 	nPerson = int(sInfo[1])&lt;br /&gt;
 &lt;br /&gt;
 	return sNum, nPaper, nPerson&lt;br /&gt;
 &lt;br /&gt;
 def stripWhiteSpaces(str):&lt;br /&gt;
 	return str.lstrip().rstrip()&lt;br /&gt;
 &lt;br /&gt;
 def extractNames(str):&lt;br /&gt;
 	parts = str.split(&amp;#039;:&amp;#039;)&lt;br /&gt;
 	names = parts[0].split(&amp;#039;.,&amp;#039;)&lt;br /&gt;
 &lt;br /&gt;
 	for i in range(0, len(names)):&lt;br /&gt;
 		dot = &amp;#039;&amp;#039;&lt;br /&gt;
 		if i &amp;amp;lt; len(names)-1 :&lt;br /&gt;
 			dot = &amp;#039;.&amp;#039;&lt;br /&gt;
 		names[i] = stripWhiteSpaces(names[i]+dot)&lt;br /&gt;
 &lt;br /&gt;
 	return names&lt;br /&gt;
 &lt;br /&gt;
 def erdosNumber(fileName):&lt;br /&gt;
 	erdosName = &amp;#039;Erdos, P.&amp;#039;&lt;br /&gt;
 	&lt;br /&gt;
 	lines = readFile(fileName)&lt;br /&gt;
 	sNum, nPaper, nPerson = extractInfo(lines)&lt;br /&gt;
 	&lt;br /&gt;
 	allNames = {}&lt;br /&gt;
 	allNames[erdosName] = 0&lt;br /&gt;
 &lt;br /&gt;
 	for i in range(2, 2+nPaper):&lt;br /&gt;
 		names = extractNames(lines[i])&lt;br /&gt;
 		&lt;br /&gt;
 		erdosFriend = None&lt;br /&gt;
 		minErdosNum = -1&lt;br /&gt;
 		&lt;br /&gt;
 		for name in names:&lt;br /&gt;
 			if allNames.has_key(name) and (minErdosNum == -1 or minErdosNum&amp;amp;gt;allNames[name]) :&lt;br /&gt;
 				minErdosNum = allNames[name]&lt;br /&gt;
 				erdosFriend = name&lt;br /&gt;
 &lt;br /&gt;
 			if name == erdosName: # 같이 쓴 사람들&lt;br /&gt;
 				erdosFriend = erdosName&lt;br /&gt;
 				break&lt;br /&gt;
 			&lt;br /&gt;
 		if erdosFriend == erdosName:&lt;br /&gt;
 			erdosCoAuthor(allNames, names, erdosName)&lt;br /&gt;
 		elif erdosFriend == None:&lt;br /&gt;
 			erdosNotRelated(allNames, names)&lt;br /&gt;
 		else :&lt;br /&gt;
 			erdosCoAuthorCoAuthor(allNames, names, erdosFriend)&lt;br /&gt;
 &lt;br /&gt;
 	printResults(lines[2+nPaper:], allNames)&lt;br /&gt;
 	return allNames&lt;br /&gt;
 &lt;br /&gt;
 def printResults(names, allNames):&lt;br /&gt;
 	for name in names:&lt;br /&gt;
 		name = stripWhiteSpaces(name)&lt;br /&gt;
 		print name,&lt;br /&gt;
 		if allNames[name] == -1 :&lt;br /&gt;
 			print &amp;#039;infinite&amp;#039;&lt;br /&gt;
 		else:&lt;br /&gt;
 			print allNames[name]&lt;br /&gt;
 &lt;br /&gt;
 def erdosCoAuthor(allNames, names, erdosName):&lt;br /&gt;
 	for name in names :&lt;br /&gt;
 		if name != erdosName:&lt;br /&gt;
 			allNames[name] = 1&lt;br /&gt;
 &lt;br /&gt;
 def erdosNotRelated(allNames, names):&lt;br /&gt;
 	for name in names:&lt;br /&gt;
 		allNames[name] = -1&lt;br /&gt;
 &lt;br /&gt;
 def erdosCoAuthorCoAuthor(allNames, names, erdosFriend):&lt;br /&gt;
 	for name in names:&lt;br /&gt;
 		if name != erdosFriend :&lt;br /&gt;
 			allNames[name] = allNames[erdosFriend] + 1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 class TestErdos(unittest.TestCase):&lt;br /&gt;
 	def setUp(self):&lt;br /&gt;
 		self.lines = readFile(&amp;quot;sample.txt&amp;quot;)&lt;br /&gt;
 	def testStripstring(self):&lt;br /&gt;
 		self.assertEqual(&amp;#039;aaa&amp;#039;, stripWhiteSpaces(&amp;#039; aaa  &amp;#039;))&lt;br /&gt;
 		self.assertEqual(&amp;#039;bbb&amp;#039;, stripWhiteSpaces(&amp;#039;  bbb&amp;#039;))&lt;br /&gt;
 		self.assertEqual(&amp;#039;ccc&amp;#039;, stripWhiteSpaces(&amp;#039;ccc   &amp;#039;))&lt;br /&gt;
 &lt;br /&gt;
 	def testInputInfo(self):&lt;br /&gt;
 		sNum, nPaper, nPerson = extractInfo(self.lines)&lt;br /&gt;
 		self.assertEqual(1, sNum)&lt;br /&gt;
 		self.assertEqual(4, nPaper)&lt;br /&gt;
 		self.assertEqual(3, nPerson)&lt;br /&gt;
 &lt;br /&gt;
 	def testAllNames(self):&lt;br /&gt;
 		sNum, nPaper, nPerson = extractInfo(self.lines)&lt;br /&gt;
 &lt;br /&gt;
 		allNames = {}&lt;br /&gt;
 &lt;br /&gt;
 		for i in range(2, 2+nPaper):&lt;br /&gt;
 			names = extractNames(self.lines[i])&lt;br /&gt;
 			for name in names:&lt;br /&gt;
 				allNames[name] = 0&lt;br /&gt;
 		&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Smith, M.N.&amp;#039;))&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Martin, G.&amp;#039;))&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Erdos, P.&amp;#039;))&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Reisig, W.&amp;#039;))&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Chen, X.&amp;#039;))&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Jablonski, T.&amp;#039;))&lt;br /&gt;
 		self.assertEqual(True, allNames.has_key(&amp;#039;Hsueh, Z.&amp;#039;))&lt;br /&gt;
 &lt;br /&gt;
 	def testErdosNum(self):&lt;br /&gt;
 		sNum, nPaper, nPerson = extractInfo(self.lines)&lt;br /&gt;
 		erdosNum = erdosNumber(&amp;quot;sample.txt&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 		self.assertEqual(1, erdosNum[stripWhiteSpaces(self.lines[6])])&lt;br /&gt;
 		self.assertEqual(-1, erdosNum[stripWhiteSpaces(self.lines[7])])	&lt;br /&gt;
 		self.assertEqual(2, erdosNum[stripWhiteSpaces(self.lines[8])])	&lt;br /&gt;
 		&lt;br /&gt;
 		&lt;br /&gt;
 &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;:&lt;br /&gt;
 	#unittest.main(argv=(&amp;#039;&amp;#039;,&amp;#039;-v&amp;#039;))&lt;br /&gt;
 	erdosNumber(&amp;quot;sample.txt&amp;quot;)&lt;br /&gt;
 	&lt;br /&gt;
 &lt;br /&gt;
 ----&lt;br /&gt;
 ErdosNumbers&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>