Demir parçacıkları bir mıknatıs etrafında


14

Tahta üzerinde bazı demir parçacıkları var. Akım taşıyan bir teli bu tahtadan geçiriyoruz ve parçacıklar daireler oluşturuyor. Verilen giriş kablonun konumuysa bu daireleri gösterin.

Tahtanın 7x7 boyutunda bir ızgara olduğunu düşünün (sabit)

Ekstra beyaz boşluklara izin verilmez.

Giriş 0 dizinli veya 1 dizinli olabilir. (Örneklerde 0 dizinli)

Örnekler

input:3,3 # 'X' is wire here but can be shown by anything other than '\/|-'
output:
/-----\
|/---\|
||/-\||
|||X|||
||\-/||
|\---/|
\-----/

input:1,2
output:
|/-\|||
||X||||
|\-/|||
\---/||
-----/|
------/
-------

input:0,0
output:
X||||||
-/|||||
--/||||
---/|||
----/||
-----/|
------/

input:0,3
output:
|||X|||
||\-/||
|\---/|
\-----/
-------
-------
-------

input:3,0
output:
---\|||
--\||||
-\|||||
X||||||
-/|||||
--/||||
---/|||

Bu kod golf çok kısa kod kazanır.


Fonksiyon karakterlerle 7x7 bir matris çıkarabilir mi yoksa konsolda yazdırmamız mı gerekiyor?
digEmTüm

Yanıtlar:



5

R , 136 119 116 bayt

function(i,j,m=diag(7),R=row(m)-i,a=j-col(m)){m[]='-'
m[R==a]='\\'
m[R==-a]='/'
m[R<a&R>-a|R>a&-R>a]='|'
m[i,j]=0
m}

Çevrimiçi deneyin!

  • @Giuseppe sayesinde -3 bayt kurtardı

Telin koordinatlarını (1 indeksli) alan (satır, sütun) alan ve karakterlerle 7x7 matris döndüren işlev.



1

JavaScript (ES7),  105  103 bayt

Girdiyi (y)(x)0 dizinli olarak alır.

Y=>X=>(g=x=>y<7?`/\\-|X
`[h=(X-x)**2,v=(Y-y)**2,x<7?h<v?2:h>v?3:h?x<X^y<Y:4:5]+g(x<7?x+1:!++y):'')(y=0)

Çevrimiçi deneyin!


1

Perl 6 , 90 bayt

{<| v - \ X />[1+([-]($_>>.abs).sign||3+[*]($_).sign)for ^7-$^a X ^7-$^b].rotor(7)>>.join}

Çevrimiçi deneyin!

İki sayı alan ve bir satır listesi döndüren anonim kod bloğu.



0

Kömür , 21 bayt

GL⁷-↙⁶X‖B↘¬‖J±N±NT⁷¦⁷

Çevrimiçi deneyin! Girdi olarak 0 dizinli sütun ve satırı alır. Açıklama:

GL⁷-

-S üçgeni çizin .

↙⁶

Hipotenüs boyunca bir çizgi çizin. (Bu yanlış bir yol ama daha sonra çözeceğiz.)

X

XTelin konumunu gösteren çizin . (Elbette burada başka herhangi bir ASCII karakteri kullanılabilir.) Bu, çizimin sekizinci bölümünü tamamlar.

‖B↘¬

¬Diyagramı neredeyse tamamlamak için karakterleri dönüştürürken üç kez yansıtın ( = sol + aşağı).

/S ile s'yi değiştirmek için dönüşmeden yansıtın , \böylece şimdi Xona doğru değil, etrafına baksınlar.

J±N±N

İstediğiniz çıktının sol üst kısmına atlayın.

T⁷¦⁷

Sonucu istediğiniz boyuta getirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.