Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Matsushima, Kazuhiro
    @Gab-km
    パスを扱いたいときは、System.IO.Pathクラスが役に立つ場面が多いです。
    callmekohei
    @callmekohei
    ガブさん!ありがとうございます!さっそくやってみます!
    できました〜。ありがとうございます!
    printfn "%A" (System.IO.Path.GetFileName str)
    Matsushima, Kazuhiro
    @Gab-km
    :+1: :
    Kouji Matsui
    @kekyo
    おぉ、DirectorySeparatorがスラッシュでも行けるんですね。一旦Uriとかを噛まさないとダメかと思った
    callmekohei
    @callmekohei

    <ビット演算について>

    たびたび申し訳ありません。お手すきの時に。。。
    下記にてprintfnの出力を2進数で出したいのですが
    10進数ででます。2進数で出すにはどのようにすればいいでしょうか?
    module TestBitOperator =
        printfn "%A" (0b0101 &&& 0b1100)
        // 4ではなく0b0100と表示させたい
    まずはここを読んでみましょう。ここに書いてないとすると、printfnでは2進出力ができない、ということかもしれません。
    callmekohei
    @callmekohei
    ガブさんありがとうございます!読んでみますっ(^_^)/
    Yukitoshi Suzuki
    @yukitos
    printfn "%s" <| "0b" + System.Convert.ToString(0b0101 &&& 0b1100, 2).PadLeft(4, '0')
    ;)
    callmekohei
    @callmekohei
    ユキトスさん!ありがとうございます!できました!ゆっくり♨️につかってくださいね(^_^)/
    callmekohei
    @callmekohei
    こんな感じでできましたー!ありがとうございます!
    module TestBitOperator =
    
        let test a (x:int, y:int) =
            match a with
            | "and" -> "0b" + System.Convert.ToString(x &&& y, 2).PadLeft(4, '0')
            | "or"  -> "0b" + System.Convert.ToString(x ||| y, 2).PadLeft(4, '0')
            | "xor" -> "0b" + System.Convert.ToString(x ^^^ y, 2).PadLeft(4, '0')
            | _ -> failwith "error!"
    
        printfn "%A" (test "and" (0b0101, 0b1100)) // "0b0100"
        printfn "%A" (test "or"  (0b0101, 0b1100)) // "0b1101"
        printfn "%A" (test "xor" (0b0101, 0b1100)) // "0b1001"
    callmekohei
    @callmekohei

    <ループを再帰にすることに関して>

    度々すみません。お手すきの時にでも。。。下記コードは組み合わせをビットで求めるコードなのですが、whileループを再帰にしたいです。がなかなかにうまくいきません。ヒントいただければ幸いです。。。

    module Combi =
    
        let first n = int(uint32 1 <<< n ) - int( uint32 1 )
    
        let nextset x =
            let smallest = x &&& -x
            let ripple = x + smallest
            let newSmallest = ripple &&& -ripple
            let ones = ((newSmallest / smallest ) >>> 1) - 0b1
            ripple + ones
    
        [<EntryPoint>]
        let main (args:string[]) =
    
            let n = System.Int32.Parse(args.[0])
            let r = System.Int32.Parse(args.[1])
            let pr (x:int) = System.Convert.ToString( x, 2 ).PadLeft(n,'0')
    
            let mutable x = first r
    
            // ★ここの while ループを再帰にしたい!
            while ( x < (first n)) do
                printfn "%A" (pr x)
                x <- nextset x
            0

    ちなみに僕が考えた再帰ですが、、、途中で何が何だかわからなくなりました(苦笑)

            let rec combi n r acc =
                match acc with
                | x::xs -> 
                    match x with
                    | 7 -> acc
                    | _ -> combi (nextset x) 2 (nextset x)::acc
    omanuke
    @omanuke

    んーコメントの直訳すると

    let rec loop x=
      if x< first n then
        printfn"%A" (pr x)
        loop<|nextset x
    loop<|first r
    0

    になると思うですが、combiはまた別ものでわ(´・ω・`)

    つか毎回first nする必要はないすね。ほんとにやりたいことはソース見てません…
    callmekohei
    @callmekohei
    omanukeさん!ありがとうございます!できました!完璧です!omanukeさんのコード読み込みます!<|がまだまだわかってないもので、、、(^_^;;
    adacola
    @adacola
    r = 0 の時に0除算が発生するのとn = r の時に何も表示されない(本当は"1111"みたいに全部1が表示されるべき?)が気になりますw
    本題とはずれてるし、そういう場面で使うことがないのであれば問題ないですが
    omanuke
    @omanuke
    それでいいんすかw combiとやろうとしてること色々と違う気が…(´・ω・`)
    callmekohei
    @callmekohei
    もうすこし考えてみます!ありがとうございます!(^_^)/
    callmekohei
    @callmekohei
    昨日の分、n=3, r=2 で考えてみました。が、ここから先がちょっと難しいです。ヒントあれば教えていただくと嬉しいです(^_^)/
    let rec abc n acc =
        match acc with
        | [] ->  abc  (nextset n) [n]
        | x::xs -> 
            match x with
            | 0b110 -> acc
            | 0b011 | 0b101 -> abc (nextset x) ((nextset x)::acc)
            | _ -> failwith "error!"
    callmekohei
    @callmekohei
    できました〜。おさわがせしてすみません(^_^;;
    let rec combi lst v acc =
        match acc with
        | [] ->  combi lst (nextset v) [v]
        | x::xs -> 
            match x with
            | _ when x < lst ->
                combi lst (nextset x) ((nextset x)::acc)
            | _ -> List.tail acc
    
    combi (first n) (first r) []
        |> List.map ( fun n -> pr n )
        |> printfn "%A"
    omanuke
    @omanuke
    おめす(´・ω・`)
    けど抜けるときに実質accから頭二つを取り除いてると思うんですけど、気持ち悪いしイレギュラーなんかないんですかね…
    callmekohei
    @callmekohei
    ありがとうございます!確かに!さらなる改善を目指します!(≧∇≦)
    callmekohei
    @callmekohei

    <マップ?の使い方について>

    マップというか対応というか、、、。ビットに対応した文字列を作りたいです。がどのようにしたらいいか皆目検討つきません。。もしお知恵あれば教えて頂けると嬉しいです。本当に何度も何度も質問してしまいすみません。
    .
    イメージ
    たとえば "abc"という文字列があるとして
    
        bit   | string
        ------+---------
        0b110 | ab
        0b101 | ac
        0b011 | bc
    callmekohei
    @callmekohei

    あ、あの〜、すいません。"110"を

    1
    1
    0

    とコンソールに出力するにはどうすれば。。。。

    pocketberserker
    @pocketberserker
    "110" |> Seq.iter (printfn "%c")
    callmekohei
    @callmekohei
    ぺ、ペンギンさん、、、ありがとうございます!すごい!!!
    This message was deleted
    callmekohei
    @callmekohei
    This message was deleted
    This message was deleted
    callmekohei
    @callmekohei
    何度も申し訳ありません。文字列を配列にする、、、というのは可能でしょうか?
    "abc"
    を
    [|"a";"b";"c"|]
    bleis-tift
    @bleis-tift
    ToCharArrayしてからArray.map stringとかですかね
    Seq.map stringしてからSeq.toArrayでも可
    MIYAZAKI Shohei
    @hafuu

    System.Collections.Generic.List<_>("aiueo") |> Seq.map string

    という方法はどうか

    seq { for x in "aiueo" -> string x } |> Seq.toArray;;
    callmekohei
    @callmekohei

    ブレイスさん、hafuuさんありがとうございます!下記の方法でまずはやってみました!
    ```
    module Test =

    let mutable i = 0 
    let aaa (arr:array<_>) str =
        for v in str do
            if v = '1' then
                printfn "%A" arr.[i]
            i <- i + 1
    
    let StringToArray str =
        str
        |> Seq.map string
        |> Seq.toArray
    
    [<EntryPoint>]
    let main (args: string[]) =
    
        let str = "abc"
        let bit = "110"
    
        aaa (StringToArray str) bit
        0
    
    // "a"
    // "b"

    ```

    MIYAZAKI Shohei
    @hafuu
    FsUnitに型が付いたのかあああああああ!!!!!!!!!!
    http://fsprojects.github.io/FsUnit/FsUnitTyped.html
    bleis-tift
    @bleis-tift
    おおっと
    ほら!
    Matsushima, Kazuhiro
    @Gab-km
    面白いことになってきた…?
    Available only for NUnit
    ふーむ…
    MIYAZAKI Shohei
    @hafuu
    NUnitユーザーなので…
    笑ってしまった
    MIYAZAKI Shohei
    @hafuu
    みんな同じこと考えてた
    Matsushima, Kazuhiro
    @Gab-km
    とましゅぴの興奮っぷり