Canonicalize CIDR: Difference between revisions

Content deleted Content added
PureFox (talk | contribs)
m →‎{{header|Wren}}: Removed an unnecessary space.
PureFox (talk | contribs)
→‎{{header|Go}}: Changed to cope with the extra examples.
Line 203:
"fmt"
"log"
"os"
"strconv"
"strings"
)
 
func check(err error) {
if err != nil {
log.Fatal(err)
}
}
 
// canonicalize a CIDR block: make sure none of the host bits are set
func main() {
func canonicalize(cidr string) string {
// canonicalize a CIDR block: make sure none of the host bits are set
var cidr string
if len(os.Args) > 1 {
cidr = os.Args[1]
} else {
log.Fatal("Please pass the CIDR to be canonicalized.")
}
 
// dotted-decimal / bits in network part
split := strings.Split(cidr, "/")
Line 249 ⟶ 241:
}
 
// and outputreturn
fmt.Printf("%s/%s\n",return strings.Join(canon, "."), + "/" + split[1])
}
 
func main() {
vartests cidr:= []string{
"87.70.141.1/22",
"36.18.154.103/12",
"62.62.197.11/29",
"67.137.119.181/4",
"161.214.74.21/24",
"184.232.176.184/18",
"os"}
 
for _, test := range tests {
fmt.Printf("%-18s -> %s\n", test, canonicalize(test))
} else {
}</lang>
 
{{out}}
<pre>
$87.70.141.1/22 go run canonicalize_cidr.go -> 87.70.141140.10/22
36.18.154.103/12 -> 36.16.0.0/12
87.70.140.0/22
62.62.197.11/29 -> 62.62.197.8/29
67.137.119.181/4 -> 64.0.0.0/4
161.214.74.21/24 -> 161.214.74.0/24
184.232.176.184/18 -> 184.232.128.0/18
</pre>