์ผ๋ ์ค ๊ฐ์ฅ ๊ธด ๋ -์ฌ๊ธฐ ์ฌ๋ถ์ ์๊ฐ์ ๋ญ๋นํ๋ ๊ฒ์ด ์์ต๋๋ค โฆ
๊ฐ์
์ด๊ฒ์ ์ธ๊ธฐ ๊ฒฝ์ฐ ๋ํ๊ฐ ์๋๋ฉฐ ๊ทธ๋ํฝ ์ถ๋ ฅ ๋ฌธ์ ๊ฐ ์๋๋๋ค. 65,536 ๊ฐ์ 0๊ณผ 1์ ๋ฌธ์์ด ๋ง ์ถ๋ ฅํ๋ฉด๋ฉ๋๋ค. ์ง๋ฌธ ํ๋จ์ ์คํ ์ค ๋ํซ์ ์ด๊ฒ์ 256 x 256 ํ๋ฐฑ ์ด๋ฏธ์ง๋ก ํ์ํ๊ณ ๊ณต์ ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ์ฝ๋์ ํจ๊ป ๋ต๋ณ์ ์ ๋ก๋ ํ ์ ์์ต๋๋ค (๋ฌธ์์ด ์ถ๋ ฅ์ด 30,000 ์์ ์คํ ๊ตํ ๋ต๋ณ์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์).
์ฑ์
์ด๋ฏธ์ง์ ์ ์๋ ๊ฐ๋ณ ํฝ์
์ ์ ์์ ํฉ๊ณ์
๋๋ค. ๊ฐ๋ณ ํฝ์
์ ์ ์๋ ๊ฐ ์์ญ ์ ์์ ํฉ ๋น ์ง๊ต , ํ๋ผ์ ๊ฑฐ๋ฆฌ ์ ํฝ์
๋ง ๋ฐ๋ ์์ ํ๋๋๋ ํ์. ์ด๋ฌํ ๊ฐ ํ์์ ๋ํ ๋ถ๋ถ ์ ์๋ 1/p
์ฌ๊ธฐ์ p
ํ๋ผ์ ๊ฑฐ๋ฆฌ์ด๋ค.
์ด ์ง๋ฌธ์ ๋งฅ๋ฝ์์ ์ฉ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ ์๋ฅผ ๊ฐ์ต๋๋ค.
-
๋น ์ง๊ต : ํฝ์ ์ด ๊ฐ์ ํ์ ์์ง ์๊ณ ๊ฐ์ ์ด์ ์์ง ์์ผ๋ฉด ํฝ์ ์ด ์ค์ฝ์ด๋ง๋๋ ํฝ์ ๊ณผ ์ง๊ตํ์ง ์์ต๋๋ค.
-
ํ๋ผ์ ๊ฑฐ๋ฆฌ : ํฝ์ ์ด ์ ํํ๊ฒ ์์ ์ธ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ๋ก ๋ถ๋ฆฌ ๋ ๊ฒฝ์ฐ ํฝ์ ์ ์ค์ฝ์ด๋ง๋๋ ํฝ์ ๊ณผ ํ๋ผ์ ๊ฑฐ๋ฆฌ์ ์์ต๋๋ค. ํนํ, ๊ฑฐ๋ฆฌ๋ ํ์์ ์ผ๋ก ์ธก์ ๋ ์ต์ ๊ฑฐ๋ฆฌ์ ๋๋ค. ์ผ์ชฝ ์ ํฝ์ ์
sqrt(2)
์ค๋ฅธ์ชฝ ์๋ํฝ์ ๊ณผ์ ๊ฑฐ๋ฆฌ์ ๋๋ค(๋ชจ๋ 4 ๊ฐ์ ๊ฐ์ฅ์๋ฆฌ ๋ฉ). -
๋ฐ๋ ์์ : ํฝ์ ์ ๊ฐ์ด 1 ์ธ ๊ฒฝ์ฐ ์ค์ฝ์ด๋ง๋๋ ํฝ์ ๊ณผ ๋ฐ๋ ์์์ ๋๋ค. ์ฆ, ์ฒซ ๋ฒ์งธ๋ 0์ด๊ณ ๋ ๋ฒ์งธ๋ 1์ด๊ฑฐ๋ ์ฒซ ๋ฒ์งธ๋ 1์ด๊ณ ๋ ๋ฒ์งธ๋ 0์ ๋๋ค.
์คํ ์ค ๋ํซ์๋ ์ด๋ฏธ์ง์ ์ ์๋ฅผ ๋งค๊ธฐ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์์ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ง๋ง ์ต์ ํ ๋๋ ํจ์จ์ ์ธ ์ ๊ทผ ๋ฐฉ๋ฒ์ ํฌํจ๋์ด ์์ง ์์ผ๋ฉฐ ์ฝ๋ ๋ง ์์ ํ๋ฉด ์ต์ข ์ด๋ฏธ์ง์ ์ ์๋ฅผ ์ผ๊ด๋๊ฒ ์ํ ํ ์ ์์ต๋๋ค.
์ฝ๋์ ๋ด์ฉ์ด ์ ํํ์ง ์์ ๊ฒฝ์ฐ ์๊ฒฌ์ด๋ ์ฑํ ์ผ๋ก ์๋ ค์ฃผ์ญ์์ค .
JavaScript ๊ฐ์ด ํน์ ๋์ ์ ๋๋ต ํ๊ธฐ์ํ ์ต์์ ์ธ์ด ์ผ ํ์๋ ์์ต๋๋ค . Snippet ์ฝ๋๋ ์๋์ ์ผ๋ก ๋ ๋น ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋จ์๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ธฐ์กด ๋ต๋ณ์์ ์ด๋ฏธ ์ ์ฆ ๋ ํจ์จ์ฑ ๋ง ์๊ฐ ํ ๊ฒ์ ๋๋ค.
์ฌ์
์ค์ฝ์ด๋ง ํฝ์
์ค์ฝ์ด๋ง ํฝ์ ์ ๋ถํฌ์ ๋ํ ์ง๊ด์ ์ธ ๋๋์์ฃผ๊ธฐ ์ํด, ์ฌ๊ธฐ (๋ณด๋ผ์)๋ 256 x 256 ์ด๋ฏธ์ง์ ํฝ์ (128, 128)์ ๋ํ ๋น ์ง๊ต ์ฃผ์ ๊ฑฐ๋ฆฌ ํฝ์ ์ ๋๋ค.
์์์ ์ด๋ฏธ์ง
์ด ์์ ๋ Python 3 ๋ต๋ณ ์์ ์์ ์์๋ก ์์ฑ ๋ ์ด๋ฏธ์ง์ ๋๋ค. ๊ทธ๊ฒ์ 138,267.64์ ์ ์๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋น์ ์๊ฒ ์ด๊ธธ ์ ์์ต๋๋ค.
์ ๋ ฅ
์ฝ๋๋ ์ ๋ ฅ์ด ํ์ํ์ง ์์ต๋๋ค.
์ฐ์ถ
์ด ์ฝ๋๋ ํ๋ฐฑ 256 x 256 ์ด๋ฏธ์ง์ ํฝ์ ์ ๋ํ๋ด๋ 65,536 ๊ฐ์ 0๊ณผ 1์ ๋ฌธ์์ด์ ์ถ๋ ฅํด์ผํฉ๋๋ค. ์ซ์๋ ๊ตฌ๋ถ ๊ธฐํธ๊ฐ์๋ ์ฐ์ ๋ฌธ์์ด์ด์ด์ผํฉ๋๋ค. ํ์ผ๋ก ์ถ๋ ฅํ๋ฉด ๋ณต์ฌ ๋ฐ ๋ถ์ฌ ๋ฃ๊ธฐ๊ฐ ๋ ์ฌ์ธ ์ ์์ง๋ง ์ด๋ ์ฌ์ฉ์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
๋ฌธ์์ด์ ๋ณต์ฌํ์ฌ ์คํ ์ค ๋ํซ์ ๋ถ์ฌ ๋ฃ์ ์ ์์ผ๋ฉด ์ฝ๋์์ ์ ์ฉํ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ถ๋ ฅ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ฅ ์ข์ ๋ฌธ์์ด์ ํ์ผ์ ์ถ๋ ฅํ๊ณ ๊ฐ์ฅ ์ข์ ์ค์ฝ์ด๋ฅผ ์ ๊ธฐ์ ์ผ๋ก STDOUT์ ์ถ๋ ฅํ์ฌ ์ฌ์ฉ์๊ฐ ๊ฒ์์ ์ค์ง ํ ์๊ธฐ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์คํ ์ค ๋ํซ
Sp3000 ์์ ์ง์ ํ๋ฏ์ด ์ค ๋ํซ์ ์ ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐ 10 ๋ถ์ด ๊ฑธ๋ ธ์ผ๋ฉฐ , ์๋์ ์ผ๋ก ๋นํจ์จ์ ์ธ ์ฐธ์กฐ ๊ตฌํ์ ๊ฒฝ์ฐ์๋ ๋๋ฌด ๋๋ฆฝ๋๋ค. Sp3000์์ ์ค์ฝ์ด๋ง์์ํ ํฝ์ ์คํ์ ์ฌ์ ๊ณ์ฐ์ ๊ฐ์ ์ ์์ ํธ์งํ์ผ๋ฉฐ ์ด์ ์ค์ฝ์ด๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ๋ช ์ด๊ฐ ๊ฑธ๋ฆฝ๋๋ค.
canvas = document.getElementById('canvas')
ctx = canvas.getContext('2d')
scoreArea = document.getElementById('scoreArea')
pastedData = document.getElementById('pastedData')
timeout = 0
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499]
primesSquared = []
for (i=0; i<primes.length; i++) {
primesSquared.push(primes[i] * primes[i])
}
width = canvas.width
height = canvas.height
area = width * height
scoringFilter = calculateScoringFilter()
function calculateScore() {
var percentage = Math.floor(currentIndex / 65536 * 10000) / 100
scoreArea.value = 'Calculating:' + percentage + '%'
for (var t=0; t<1000; t++) {
if (currentIndex < 65536) {
partialScore += pixelScore(currentIndex)
currentIndex += 1
} else {
scoreArea.value = 'Score: ' + partialScore
return
}
}
timeout = setTimeout(calculateScore, 10)
}
function pixelScore(i) {
var score = 0
var x = i % width
var y = Math.floor(i / width)
var a, b, xd, yd, j, k, d, m
for (k=0; k<scoringFilter.length; k++) {
bundle = scoringFilter[k]
m = bundle[0]
a = m % width
b = Math.floor(m / width)
j = ((x+a) % width) + width * ((y+b) % height)
d = bundle[1]
score += Math.abs(pixels[i] - pixels[j]) / d
}
return score
}
function display(pixels) {
for (var i=0; i<area; i++) {
ctx.fillStyle = pixels[i] ? 'white' : 'black'
ctx.fillRect(i % width, Math.floor(i / width), 1, 1)
}
}
function stop() {
clearTimeout(timeout)
scoreArea.value = 'Calculation cancelled.'
}
function isPrimeSquared(n) {
return primesSquared.indexOf(n) > -1
}
function applyToImage() {
var potentialPixels = []
var pastedString = pastedData.value
if (pastedString.length !== 65536) {
scoreArea.value = 'Incorrect length:' + pastedString.length
return
}
var i, digit
for (i=0; i<pastedString.length; i++) {
digit = pastedString.substring(i, i + 1)
if (digit === '0') {
potentialPixels.push(0)
} else if (digit === '1') {
potentialPixels.push(1)
} else {
scoreArea.value = 'Invalid character ' + i + ':' + digit
return
}
}
pixels = potentialPixels
display(pixels)
scoreArea.value = 'Calculating score...'
partialScore = 0
currentIndex = 0
timeout = setTimeout(calculateScore, 10)
}
function calculateScoringFilter() {
var scoringFilter = []
var i, x, y, xd, yd
for (i=0; i<area; i++) {
x = i % width
y = Math.floor(i / width)
xd = Math.min(x,(-x+width)%width)
yd = Math.min(y,(-y+height)%height)
dSquared = xd*xd + yd*yd
if (xd && yd && isPrimeSquared(dSquared)) {
d = Math.sqrt(dSquared)
scoringFilter.push([i, d])
}
}
return scoringFilter
}
<canvas id='canvas' width='256' height='256'></canvas>
<br>
<input id='scoreArea' rows='1' readonly></input>
<br>
<button onclick='applyToImage()'>Apply string to image</button>
<button onclick='stop()'>Stop</button>
<br>
<br>
Paste in string of 65,536 zeroes and ones here:
<br>
<input id='pastedData'></input>
์์ ์ ์ฝ๋์ ์์์ ์ผ๋ก ์ถ๋ ฅ ๋๋ ๋ค๋ฅธ ๋ต๋ณ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ง์ ๋ต๋ณ์ ๋ํ ํฌ๋ ๋ง๊ณผ ๋งํฌ๋ฅผ ์ ๊ณตํด์ผํฉ๋๋ค. ์ด ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์์ ๋ต๋ณ์ด๋ ์ง๋ฌธ์ โโ์ฝ๋๋ฅผ ๊ฐ๋ฆฌ์ง ์์๋๋ฉ๋๋ค.
Nerd Sniping ์ด๋ผ๋ ์ฉ์ด๋ก Randall Munroe์ ํฌ๋ ๋ง
๋ต๋ณ
CJam, 276496.9062958626 ์
2,128*_(]128*
๊ฑฐ๋ฆฌ๊ฐ 2 ์ธ ์ง๊ต๊ฐ ์๋ ์์ด โโ์๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ฆฌ๊ฐ ํ์ ์ฌ์ผํ๋ฉฐ ๊ฑฐ๋ฆฌ๋ ์ ๊ณฑ์ ๋๋ค. p 2 = x 2 + y 2 ์ด๋ฏ๋ก x์ y (์ ๊ณฑ ์ฌ๋ถ) ์ค ํ๋๋ ํ์ ์ฌ์ผํ๊ณ ๋ค๋ฅธ ํ๋๋ ์ง์ ์ฌ์ผํฉ๋๋ค. ์ด๋ฌํ ์ ์์ด ์ด๋ฏธ์ง์์ ํญ์ ๋ฐ๋ ์์์ ๋๋ค.
์ด๊ฒ๊ณผ ๊ทธ๊ฒ์ ๋ถ์ ์ ์ธ ๊ฒ๋ง์ด ์ ์ผํ ์ต์ ์ ์๋ฃจ์ ์ ๋๋ค. ์ต์ ์ ์๋ฃจ์ ์์ ์ง๊ตํ์ง ์์ ๊ธฐ๋ณธ ๊ฑฐ๋ฆฌ ํฝ์ ์ ์์์ ๋์ผํ์ง ์์์ผํฉ๋๋ค. (3,4) ๋ฐ (4,3)๊ณผ ๊ฐ์ด ๋๊ฐ์ ์ผ๋ก ์ธ์ ํ ๋ฐ๋ ํฝ์ ์ด ์์ต๋๋ค. ๋ฐ๋ ์์ ๋ฑ์ ํฝ์ ์ ์ฑ์์ผ๋ก์จ ๊ฐ์ ์์์ ๋๊ฐ์ ์ ์ป์ ์ ์์ต๋๋ค. ๋๊ฐ์ ์ ๊ฐ ํฝ์ ์์ ์์ํ์ฌ ๋ชจ๋ ๋๊ฐ ๋๊ฐ์ ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฑ์ธ ์ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋๋ฌ ์ธ์ฌ ์์ต๋๋ค. ๊ทธ๋๋ ๊ทธ๋๋ ์ต์ ์ ๋๋ค.
๋ต๋ณ
Python 3, 138267.64 ์
์ด๊ฒ์ ํ์ํ ๊ฒ์ ์์ ์ด๊ธธ๋งํ ์ต์ํ์ ๋๋ต์ ๋๋ค โฆ
๊ทธ๊ฒ์ ํฌํจ
- ์ธ์ด ์ด๋ฆ.
- ์ง๋ฌธ์ ์คํ ์ค ๋ํซ ์ ์์ ๋๋ค.
- ์ด๋ฏธ์ง๊ฐ ์คํ ์ค ๋ํซ์์ ์ ์ฅ๋์์ต๋๋ค.
- ์ด ์ฝ๋๋ 65,536 ๊ฐ์ 0๊ณผ 1์ ๋ฌธ์์ด์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ์ถ
์ํธ
from random import random
output_string = ''
filename = '65536digits.txt'
for t in range(65536):
digit = int(random() * 2)
output_string += str(digit)
with open(filename, 'w') as output_file:
output_file.write(output_string)
์ด๊ฒ์ ๋จ์ง ์์ผ๋ฟ์ ๋๋ค. ํ์ด์ฌ์ด ๋ฐ๋์์ด ํน์ ๋์ ์ ๋ํ ๊ฒฝ์์ ์ธ ๋ต๋ณ์ ๊ฐ์ฅ ์ ํฉํ ์ธ์ด๋ ์๋๋๋ค.