add: testing to tictactoe rename: tictactoe add: tictactoe steps refactor: tictactoe const names refactor: tictactoe loop add: tictactoe bad switch example (fallthrough) refactor: tictactoe loop skin remove: tictactoe changable skin refactor: tictactoe all remove: tictactoe unnecessary base dir add: tictactoe slices add: tictactoe slices remove: tictactoe fallthrough rename: tictactoe slices 10 -> 09 update: loops skin tictactoe add: tictactoe randomization add: tictactoe infinite loop and labeled break refactor: tictactoe rand and infinite loop add: tictactoe buggy winning algo add: tictactoe more tests rename: tictactoe wrongPlay to wrongMove add: tictactoe even more tests fix: tictactoe rename: tictactoe waitForInput to wait add: tictactoe os.args gameSpeed remove: tictactoe unnecessary files rename: tictactoe game messages refactor: tictactoe main loop add: types and arrays
		
			
				
	
	
		
			64 lines
		
	
	
		
			946 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			946 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// For more tutorials: https://blog.learngoprogramming.com
 | 
						|
//
 | 
						|
// Copyright © 2018 Inanc Gumus
 | 
						|
// Learn Go Programming Course
 | 
						|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
 | 
						|
//
 | 
						|
 | 
						|
// go run . {1..100}
 | 
						|
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"os"
 | 
						|
	"strconv"
 | 
						|
)
 | 
						|
 | 
						|
func main() {
 | 
						|
	const usageMsg = `Type a couple of unique numbers.
 | 
						|
Separate them with spaces.`
 | 
						|
 | 
						|
	// remember [1:] skips the first argument
 | 
						|
	args := os.Args[1:]
 | 
						|
	if len(args) == 0 {
 | 
						|
		fmt.Println(usageMsg)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
main:
 | 
						|
	for _, arg := range args {
 | 
						|
		n, err := strconv.Atoi(arg)
 | 
						|
		if err != nil {
 | 
						|
			// skip non-numerics
 | 
						|
			continue
 | 
						|
		}
 | 
						|
 | 
						|
		switch {
 | 
						|
		// prime
 | 
						|
		case n == 2, n == 3:
 | 
						|
			fmt.Print(n, " ")
 | 
						|
			continue
 | 
						|
 | 
						|
		// not a prime
 | 
						|
		case n <= 1, n%2 == 0, n%3 == 0:
 | 
						|
			continue
 | 
						|
		}
 | 
						|
 | 
						|
		for i, w := 5, 2; i*i <= n; {
 | 
						|
			// not a prime
 | 
						|
			if n%i == 0 {
 | 
						|
				continue main
 | 
						|
			}
 | 
						|
 | 
						|
			i += w
 | 
						|
			w = 6 - w
 | 
						|
		}
 | 
						|
 | 
						|
		// all checks ok: it's a prime
 | 
						|
		fmt.Print(n, " ")
 | 
						|
	}
 | 
						|
 | 
						|
	fmt.Println()
 | 
						|
}
 |