Four sides of square
Fill with 1's the four sides of square. The rest of the square should be filled with 0's.
If you can please use GUI
Four sides of square - image
- Task
ALGOL 68
<lang algol68>BEGIN # draw a matrix with 1s on the edges and 0s elsewhere #
# draws a matrix with height and width = n with 1s on the edges # PROC draw square = ( INT n )VOID: FOR i TO n DO FOR j TO n DO print( ( " ", whole( ABS ( i = 1 OR i = n OR j = 1 OR j = n ), 0 ) ) ) OD; print( ( newline ) ) OD # draw square # ; # test the draw square procedure # draw square( 6 ); print( ( newline ) ); draw square( 7 )
END </lang>
- Output:
1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1
C
<lang c>#include <stdio.h>
void hollowMatrix(unsigned int n) {
int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { if (i == 0 || i == n - 1 || j == 0 || j == n - 1) { printf("%d ", 1); } else { printf("%d ", 0); } } printf("\n"); }
}
int main() {
hollowMatrix(10); printf("\n"); hollowMatrix(11); return 0;
}</lang>
- Output:
1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
F#
<lang fsharp> // Four sides of square. Nigel Galloway: February 18th., 2022 let m11 m=Array2D.init m m (fun n g->if n=0 || g=0 || g=m-1 || n=m-1 then 1 else 0) printfn "%A\n\n%A" (m11 5) (m11 6) </lang>
- Output:
[[1; 1; 1; 1; 1] [1; 0; 0; 0; 1] [1; 0; 0; 0; 1] [1; 0; 0; 0; 1] [1; 1; 1; 1; 1]] [[1; 1; 1; 1; 1; 1] [1; 0; 0; 0; 0; 1] [1; 0; 0; 0; 0; 1] [1; 0; 0; 0; 0; 1] [1; 0; 0; 0; 0; 1] [1; 1; 1; 1; 1; 1]]
FreeBASIC
Text based
<lang freebasic>Sub hollowMatrix(n As Integer)
For i As Integer = 0 To n For j As Integer = 0 To n Print Iif((i = 0) Or (i = n) Or (j = 0) Or (j = n), "1 ", "0 "); Next j Print Next i
End Sub
hollowMatrix(9) Sleep</lang>
- Output:
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
Graphical
<lang freebasic>Dim As Integer n = 9, size = 60 * n + 70 Screenres size, size, 24 Cls Windowtitle "Four sides of square"
Dim As Integer beige = Rgb(245, 245, 220), brown = Rgb(171, 82, 54)
For x As Integer = 0 To n
For y As Integer = 0 To n Dim As Integer cx = x*60 + 10 Dim As Integer cy = y*60 + 10 If (x = 0) Or (x = n) Or (y = 0) Or (y = n) Then Line (cx,cy) - (cx+50, cy+50), brown, BF Draw String (cx + 22, cy + 22), "1", 0 Else Line (cx,cy) - (cx+50, cy+50), beige, BF Draw String (cx + 22, cy + 22), "0", 0 End If Next y
Next x Bsave "hollowMatrix.bmp",0 Sleep</lang>
- Output:
https://www.dropbox.com/s/9g5ahfzw1muuzgm/hollowMatrix.bmp?dl=0
Go
<lang go>package main
import "fmt"
func hollowMatrix(n uint) {
for i := uint(0); i < n; i++ { for j := uint(0); j < n; j++ { if i == 0 || i == n-1 || j == 0 || j == n-1 { fmt.Printf("%d ", 1) } else { fmt.Printf("%d ", 0) } } fmt.Println() }
}
func main() {
hollowMatrix(8) fmt.Println() hollowMatrix(9)
}</lang>
- Output:
1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
J
Implementation: <lang J>fsos=: Template:+./~(+.</lang>
Some examples:
<lang J> fsos 0
fsos 1
1
fsos 2
1 1 1 1
fsos 3
1 1 1 1 0 1 1 1 1
fsos 4
1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1
fsos 10
1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1</lang>
Gui examples are not visible here, but, for example: <lang J> require'viewmat'
viewmat fsos 20 viewmat fsos 5</lang>
Phix
See Matrix_with_two_diagonals#Phix and press 'O'.
Raku
This isn't a matrix, especially if it is supposed to be graphical; it's a very small (or extremely low resolution) bitmap.
<lang perl6>sub hollow ($n) { [1 xx $n], |(0 ^..^ $n).map( { [flat 1, 0 xx $n - 2, 1] } ), [1 xx $n] }
.put for hollow 7; put ; .put for hollow 10;</lang>
- Output:
1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
Red
<lang rebol>Red[]
view-square: function [size][
matrix: copy [ title "Four sides of a square" style cell: base 50x50 font-size 20 style one: cell brown font-color beige "1" ; I am not an artist. Please have mercy! style zero: cell beige font-color brown "0" ] repeat i size [ either any [i = 1 i = size] [ append matrix append/dup copy [] 'one size ][ row: append/dup copy [] 'zero size row/1: row/:size: 'one append matrix row ] append matrix 'return ] view matrix
]
view-square 9</lang>
- Output:
https://commons.wikimedia.org/wiki/File:Hollow_matrix_gui.png
Ring
<lang ring>
- Project : Identity Matrix
- Date : 2022/16/02
- Author : Gal Zsolt (~ CalmoSoft ~)
- Email : <calmosoft@gmail.com>
load "stdlib.ring" load "guilib.ring"
size = 9 C_Spacing = 1
C_ButtonBlueStyle = 'border-radius:6px;color:black; background-color: blue' C_ButtonOrangeStyle = 'border-radius:6px;color:black; background-color: orange'
Button = newlist(size,size) LayoutButtonRow = list(size)
app = new qApp {
win = new qWidget() {
setWindowTitle('Identity Matrix') move(500,100) reSize(600,600) winheight = win.height() fontSize = 18 + (winheight / 100)
LayoutButtonMain = new QVBoxLayout()
LayoutButtonMain.setSpacing(C_Spacing) LayoutButtonMain.setContentsmargins(0,0,0,0)
for Row = 1 to size LayoutButtonRow[Row] = new QHBoxLayout() { setSpacing(C_Spacing) setContentsmargins(0,0,0,0) }
for Col = 1 to size
Button[Row][Col] = new QPushButton(win) {
setSizePolicy(1,1)
}
LayoutButtonRow[Row].AddWidget(Button[Row][Col]) next LayoutButtonMain.AddLayout(LayoutButtonRow[Row]) next
LayoutDataRow1 = new QHBoxLayout() { setSpacing(C_Spacing) setContentsMargins(0,0,0,0) } LayoutButtonMain.AddLayout(LayoutDataRow1) setLayout(LayoutButtonMain) show() } pBegin() exec() }
func pBegin()
for Row = 1 to size for Col = 1 to size if Row = 1 or row = size or Col = 1 or Col = size Button[Row][Col].setStyleSheet(C_ButtonOrangeStyle) Button[Row][Col].settext("1") else Button[Row][Col].setStyleSheet(C_ButtonBlueStyle) Button[Row][Col].settext("0") ok
next
next
</lang>
Output image:
Four sides of square
Wren
Text based
<lang ecmascript>var hollowMatrix = Fn.new { |n|
for (i in 0...n) { for (j in 0...n) { System.write((i == 0 || i == n-1 || j == 0 || j == n-1) ? "1 " : "0 ") } System.print() }
}
hollowMatrix.call(9)</lang>
- Output:
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
Graphical
This is designed to look as close as possible to the Red entry's image so that we don't have to fill up Wikimedia Commons with similar looking images. <lang ecmascript>import "dome" for Window import "graphics" for Canvas, Color, Font class Main {
construct new(n) { var size = 60 * n + 10 Window.resize(size, size) Canvas.resize(size, size) Window.title = "Four sides of a square" // see Go-fonts page Font.load("Go-Regular20", "Go-Regular.ttf", 20) Canvas.font = "Go-Regular20" var beige = Color.new(245, 245, 220) Canvas.cls(Color.lightgray) for (x in 0...n) { for (y in 0...n) { var cx = x*60 + 10 var cy = y*60 + 10 if (x == 0 || x == n-1 || y == 0 || y == n-1) { Canvas.rectfill(cx, cy, 50, 50, Color.brown) Canvas.print("1", cx + 20, cy + 15, beige) } else { Canvas.rectfill(cx, cy, 50, 50, beige) Canvas.print("0", cx + 20, cy + 15, Color.brown) } } } }
init() {}
update() {}
draw(alpha) {}
}
var Game = Main.new(9)</lang>
- Output:
Similar to Red entry image.
XPL0
<lang XPL0>proc DrawMat(S); int S, I, J; [for I:= 0 to S-1 do
[for J:= 0 to S-1 do Text(0, if I>0 & I<S-1 & J>0 & J<S-1 then "0 " else "1 "); CrLf(0); ];
]; [DrawMat(6); CrLf(0);
DrawMat(7); CrLf(0);
]</lang>
- Output:
1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1