μΌλ μ€ κ°μ₯ κΈ΄ λ -μ¬κΈ° μ¬λΆμ μκ°μ λλΉνλ κ²μ΄ μμ΅λλ€ β¦
κ°μ
μ΄κ²μ μΈκΈ° κ²½μ° λνκ° μλλ©° κ·Έλν½ μΆλ ₯ λ¬Έμ κ° μλλλ€. 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)
μ΄κ²μ λ¨μ§ μμΌλΏμ λλ€. νμ΄μ¬μ΄ λ°λμμ΄ νΉμ λμ μ λν κ²½μμ μΈ λ΅λ³μ κ°μ₯ μ ν©ν μΈμ΄λ μλλλ€.