3,4,5组成的七位数,相邻数字不同的数的个数
F#
let t = [3;4;5] seq{ for a in t do for b in t do for c in t do for d in t do for e in t do for f in t do for g in t do yield a::b::c::d::e::f::g::[] } |> Seq.filter (fun x -> let rec j = function | a::b::_ when a = b -> false | _::_::[] -> true | _::b::tail -> j (b::tail) j x) |> Seq.length |> System.Console.WriteLine
JavaScript
Array(7) .fill([...Array(3).keys()].map(x => (x + 3).toString())) .reduce((a, b) => a.flatMap(x => b.map(y => x + y))) .filter(x => !/(\d)\1/.test(x)) .map(Number) .length
小于200,除7余2,除8余3,除9余1
F#
seq { 7 * 8 - 5 .. 56 .. 200 } |> Seq.filter (fun x -> x % 9 = 1) |> Seq.iter System.Console.WriteLine
JavaScript
[...Array(200 - (7 * 8 - 5)).keys()].map(x=>x + (7 * 8 - 5)).filter((_, i) => i % 56 === 0).filter(x => x % 9 === 1)
画*
F#
open System let n = Console.ReadLine() |> Convert.ToInt32 let nm = n / 2 + 1 [1..n] |> List.iter (fun x -> Console.WriteLine( "".PadLeft(Math.Abs(nm - x)) + "".PadLeft(2*(nm - Math.Abs(nm - x))-1, '*')))
JavaScript
require('readline').createInterface({ input: process.stdin }).on('line', (line) => { const nm = Math.floor(+line / 2 + 1); [...Array(+line + 1).keys()].slice(1).forEach(x => console.log(" ".repeat(Math.abs(nm - x)) + "*".repeat(2 * (nm - Math.abs(nm - x)) - 1))); });
取石子游戏
F#
open System let GoldenRatio = (sqrt 5. + 1.) / 2. let WythoffsGame m n = let a::b::_ = List.sort [m; n] if (GoldenRatio * float (b - a)).ToString().Split('.').[0] |> Int32.Parse = a then false else true [<EntryPoint>] let main _ = while true do match Console.ReadLine() with | null -> exit 0 | str -> let d = str.Split ' ' |> Array.map Int32.Parse WythoffsGame d.[0] d.[1] |> printfn "%A" 0
JavaScript
require('readline').createInterface({ input: process.stdin, output: process.stdout }).on('line', (line) => { const x = line.split(" ").map(Number).sort().reverse(); console.log(parseInt(x.reduce((a, b) => a - b) * (Math.sqrt(5) + 1) / 2) !== x[0]); });
蛇行矩阵
F#
open System type Op = UpRight | DownLeft let ZigZagMatrix m n = let map = Array2D.create m n 1 let rec run x y i op = map.[x, y] <- i match op with | _ when x = m - 1 && y = n - 1 -> map | DownLeft when x = m - 1 -> run x (y + 1) (i + 1) UpRight | UpRight when y = n - 1 -> run (x + 1) y (i + 1) DownLeft | DownLeft when y = 0 -> run (x + 1) 0 (i + 1) UpRight | UpRight when x = 0 -> run 0 (y + 1) (i + 1) DownLeft | DownLeft -> run (x + 1) (y - 1) (i + 1) DownLeft | _ -> run (x - 1) (y + 1) (i + 1) UpRight run 0 0 1 UpRight let SnakeMatrix x = ZigZagMatrix x x [<EntryPoint>] let main _ = while true do match Console.ReadLine() with | null -> exit 0 | str -> let n = Int32.Parse str SnakeMatrix n |> Seq.cast<int> |> Seq.chunkBySize n |> Seq.map (Array.map Convert.ToString >> String.concat " ") |> Seq.iter (printfn "%s") 0
JavaScript
require('readline').createInterface({ input: process.stdin, output: process.stdout }).on('line', (line) => { const r = Array(2).fill([...Array(+line).keys()]).reduce((a, b) => a.flatMap(x => b.map(y => x + [y]))), s = [...r].sort((a, b) => { const f = x => [+x[0] + +x[1], (+x[0] + +x[1]) % 2 ? -x[1] : x[1]], x = f(a), y = f(b); return x[0] === y[0] ? x[1] - y[1] : x[0] - y[0]; }), m = r.map(x => s.indexOf(x) + 1); [...Array(+line).keys()].forEach(i => console.log(m.slice(i * +line, i * +line + (+line - i)).join())); });
由1,3,4,5,7,8这六个数字所组成的六位数中,能被11整除的最大的数是多少
JavaScript
Math.max.apply({},Array(6).fill([1,3,4,5,7,8]).reduce((a, b) => a.flatMap(x => b.map(y => x + [y]))).filter(x => !/(.).*?\1/.test(x)).filter(x => x%11==0))
请用1,2,5,7,8,9这六个数字来组成一个五位数,使得它能被75整除,并求出这样的五位数有几个
JavaScript
Array(5).fill([1,2,5,7,8,9].map(x => x.toString())).reduce((a, b) => a.flatMap(x => b.map(y => x + y))).filter(x => !/(.).*?\1/.test(x)).filter(x => x%75==0).length