ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¦b¤è°}©Î¯x°}¤¤,¥H±ÛÂà¤è¦¡¶ñ¤J­È

  1. Option Base 1
  2. Sub ¥H±ÛÂà¤è¦¡¶ñ¤J­È()

  3.     xc = 10: yc = 10 '¤¤¤ß¦ì¸m

  4.     ¥k = [{0, 1}]: ¤U = [{1,0}]: ¥ª = [{0,-1}]: ¤W = [{-1, 0}]
  5.     yx = Application.Transpose(Application.Transpose(Array(¥k, ¤U, ¥ª, ¤W))) '±±¨î¤è¦V¤ÎÂà¦V
  6.    
  7.     n = InputBox("¿é¤J±Æ¦C¼Æ¦r", , 25)
  8.     n1 = Application.RoundUp(((n ^ 0.5) - 1) / 2, 0) + 1
  9.     nn = n1 * 2 + 1
  10.     Cells(yc - n1, xc - n1).Resize(nn, nn).ClearContents

  11.     x = xc: y = yc
  12.     Cells(xc, yc) = 1
  13.     For i = 2 To n
  14.         ds = [{0,0,0,0}]
  15.         For j = 1 To 4 '¥|­Ó¤è¦V
  16.             If Cells(y + yx(j, 1), x + yx(j, 2)) = "" Then
  17.                 ds(j) = ((y + yx(j, 1) - yc) ^ 2 + (x + yx(j, 2) - xc) ^ 2) * 10 + j '¶ZÂ÷*10+¤è¦V
  18.             Else
  19.                 ds(j) = ""
  20.             End If
  21.         Next
  22.         jj = Application.Min(ds) Mod 10 '¨ú¶ZÂ÷­ìÂI³Ìµu¤Î±Æ¦C³Ì«e¤è¦V
  23.         x = x + yx(jj, 2)
  24.         y = y + yx(jj, 1)
  25.         Cells(y, x) = i
  26.     Next
  27. End Sub
½Æ»s¥N½X
1

µû¤À¤H¼Æ

{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 3# ­ã´£³¡ªL

ª¾ÃÑ+ªºW¤j¥Î¼Æ¾Ç¤Î¨ç¼Æªº¥\¤O¯u¬OµL¤H¯à¼Ä¡A­ì¥ý¤@¶}©l§Ú¤]¬O´Â³o¤è¦Vºc·Q¡C

«á¨Ó¬Ý§A¶Kªº®ÄªG¹Ï¦b­þ¸ÌÂà°ÚÂà°Ú¡A¬ðµM·Q¨ì¬JµM­n¥ÎVBA´N¦³¥þ·sªººc·Q¡C
±q¶K¹Ïªº¹B°Ê¼Ò¦¡¥i¥H¾ã²z¦p¤U
1. ¨C¤@¨B¥u¦³ ¤W¡B¤U¡B¥ª¡B¥k µ¥4ºØ¨Bªk
2. ­n³ò¶¤¤¤ß±Æ¦C¡A©Ò¥H¨C¤@¨B³£­n¿ï¾ÜÂ÷¤¤¤ß³Ìªñªº¶ZÂ÷¡C

'±±¨î¤è¦V¤ÎÂà¦V  
yx = Application.Transpose(Application.Transpose(Array(¥k, ¤U, ¥ª, ¤W))) '²Ä¤@¨B¦V¥k¡A¶¶®É±Æ¦C
¹Ï¤ù 1.jpg
§Q¥Î¤W¦¡¤¤ ... ¥k, ¤U, ¥ª, ¤W ªº©ñ¸m¶¶§Ç¨Ó±±¨î¤è¦V¤ÎÂà¦V
²Ä1¦ì¸m±±¨î²Ä¤@¨B¤è¦V¡A¥i¥H©ñ¸m ..... ¥k, ¤U, ¥ª, ¤W .... ¨Ó§ïÅÜ¡C
²Ä2~3¦ì¸m±±¨î¶¶¡B°f±Æ¦C¤è¦V¡C

yx = Application.Transpose(Application.Transpose(Array(¤U, ¥k, ¤W, ¥ª)))  '²Ä¤@¨B¦V¤U¡A°f®É±Æ¦C
¹Ï¤ù 2.jpg

¥u¯à¼g¨Ç²³æVBA¡A¤¶­±¤Î»yªk¦³¤£¨¬ªº¦a¤èÅwªï¤j®aÄ~Äò­×§ï¡C
1

µû¤À¤H¼Æ

{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

¦^´_ 9# bobomi

¥[¤J bobomi ªº
¥k = [{0, 1, "¡÷","¢z"}]: ¤U = [{1,0,"¡õ","¢{"}]: ¥ª = [{0,-1,"¡ö","¢}"}]: ¤W = [{-1, 0,"¡ô","¢|"}]
®ÄªG¹Ï¤G´N¥X¨Ó¤F

Option Base 1
Sub ¥H±ÛÂà¤è¦¡¶ñ¤J­È()

    xc = 10: yc = 10    '¤¤¤ß¦ì¸m

    ¥k = [{0, 1, "¡÷","¢z"}]: ¤U = [{1,0,"¡õ","¢{"}]: ¥ª = [{0,-1,"¡ö","¢}"}]: ¤W = [{-1, 0,"¡ô","¢|"}]
    yx = Array(¥k, ¤U, ¥ª, ¤W)    '±±¨î¤è¦V¤Î¶¶®ÉÂà¦V

    '    ¥k = [{0, 1, "¡÷","¢|"}]: ¤U = [{1,0,"¡õ","¢z"}]: ¥ª = [{0,-1,"¡ö","¢{"}]: ¤W = [{-1, 0,"¡ô","¢}"}]
    '    yx = Array(¤U, ¥k, ¤W, ¥ª)    '±±¨î¤è¦V¤Î°f®ÉÂà¦V

    n = InputBox("¿é¤J±Æ¦C¼Æ¦r", , 25)
    [A1:Z26].ClearContents

    x = xc: y = yc: xp1 = x: yp1 = y
    Cells(x, y) = 1
    f1 = "": f2 = ""
    For i = 2 To n
        ds = [{"","","",""}]
        For j = 1 To 4    '¥|­Ó¤è¦V
            yy = yx(j)(1): xx = yx(j)(2)
            If Cells(y + yy, x + xx) = "" Then
                ds(j) = ((y + yy - yc) ^ 2 + (x + xx - xc) ^ 2) * 10 + j    '¶ZÂ÷*10+¤è¦V
            End If
        Next
        k = Application.Min(ds) Mod 10    '¨ú¶ZÂ÷­ìÂI³Ìµu¤Î±Æ¦C³Ì«e¤è¦V

        y = y + yx(k)(1)
        x = x + yx(k)(2)
        Cells(y, x) = i

        ¤è¦V²Å¸¹ = IIf(i = 2, "¡·", yx(k)(3 + IIf(k = kp1, 0, 1)))
        Cells(yp1, xp1) = Cells(yp1, xp1) & ¤è¦V²Å¸¹
        yp1 = y: xp1 = x: kp1 = k

        'Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
    Next
    Cells(yp1, xp1) = Cells(yp1, xp1) & "¡´"
End Sub
1

µû¤À¤H¼Æ

{...} ªí¥Ü»Ý­n¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡

TOP

        ÀR«ä¦Û¦b : ¡i¬O§_µo´§¤F¨}¯à¡H¡j¤H¶¡¹Ø©R¦]¬°µu¼È¡A¤~§óÅã±o¬Ã¶Q¡CÃø±o¨Ó¤@½ë¤H¶¡¡AÀ³°Ý¬O§_¬°¤H¶¡µo´§¤F¦Û¤vªº¨}¯à¡A¦Ó¤£­n¤@¨ý¨Dªø¹Ø¡C
ªð¦^¦Cªí ¤W¤@¥DÃD