問題タブ [luhn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Luhn Algorithm は時々動作し、時々失敗します
アルゴリズムに適合する場合は true が出力され、適合しない場合は false が出力されます。どこがうまくいかないのですか?
私は試した
コード
c - クレジット カードの検証に Luhn のアルゴリズムを適用するプログラムを C で作成する
ユーザーに入力を求めるプロンプトを表示し、入力がクレジット カードの形式 (例: 負の数字や文字など) に従っていない場合に再度プロンプトを表示し、アルゴリズムを適用して数値が有効なクレジット カード番号と、そうであれば、それが Visa、MasterCard、AmEx のいずれであるか。
この質問は、この Web サイトのさまざまなコードで回答されていることを知っています。(このサイトおよびネット上の他の場所で) 見つけられる可能性のあるすべてのものを読んだことを誓いますが、C 構文を理解するのに本当に苦労しています。他の回答から理解できないコードのビットをコピーするのではなく、自分で何かを考え出そうとしたかった. 誰かが私を助けて、私がこれまでに行ったことを見て、私が間違っていることを教えてくれたら、本当に感謝しています. また、C 構文ロジックをよりよく理解するのに役立つヒントがあれば、非常に高く評価されます。
私のプログラムはコンパイル中ですが、実行すると非常に奇妙な動作をします。入力を入力すると、(有効な数値であっても) 無効であると表示されることがあり、押しても何も返されないことがあります。何回リターンキーを押しても実行が止まりません。
これまでの私のコードは次のとおりです。
python - Luhns アルゴリズム
学校の課題でルーンのアルゴリズムをやっています。
いくつかの出力は正しい方法で出力されています。ただし、そうでないものもあります。
0004222222222222の合計を私に与えています44、
と
0378282246310005の合計を私に与えています48、
いくつかの例について。
私は初心者なので、コードが最もきれいではないことはわかっていますが、エラーが発生している場所を誰かが特定できれば、本当に感謝しています
これが私のコードです:
python - このエラーを修正する方法がわからない Luhn Algorithm PYTHON
よし、それで私はほとんどそこにいると思う.私の最初/2番目の部分は、それらが単独である場合は完璧に機能する.しかし、私は2つを組み合わせるのに苦労している.最後のビット、申し訳ありませんが、私はPythonを初めて使用するので、すぐにコツをつかみたいと思っています
Edit3:(皆さんの助けを借りて)動作するようになりましたが、3782822463100050を入力すると、無効なアメリカンエクスプレスであると思われますが、有効なアメリカンエクスプレスとして表示されます...
Edit1: わかりました。たとえば、0378282246310005(偽のアメリカン エクスプレス) を投稿すると、次のように表示されます。
0378282246310005しかし、それが機能するように乱数を挿入すると
クレジットカード番号 0378282246310005 を入力してください
そのようなカードは受け付けていません
Edit2: 最後に、クレジット カード番号を入力できるはずです。「あなたの「クレジット カードの種類」は有効です (または無効です)」と表示されます。
または「このカードはサポートしていません」と言う
algorithm - Python を使用して有効なクレジット カード番号を確認する
これは、クレジット カード番号が有効かどうかを計算するために取り組んできた宿題です。多くのステップがあり、他の 2 つのヘルパー関数を使用します。
最初のヘルパー関数は、n の各桁から構成されるリストを作成します。
2 番目のヘルパー関数は、数字の桁数の合計を追加します。例えば:
したがって、私が取り組んでいる機能は、16 桁のクレジット カード番号を検証することです。指定された順序に従う特定の順序があります。
- 数字のみが含まれていることを確認します。#終わり。
- 長さが 16 桁であることを確認します。#終わり。
- n が文字列の場合、整数に変換します。
- 関数 intToList(n) を使用してリストを作成します。
- intToList(n) によって作成されたリストの奇数インデックスを 2 で乗算し、2 桁の数値を生成する積は、関数 addDigits(n) を使用して数字の合計に置き換えられます。
- intToList(n) を作成したリスト内のすべての 1 桁の合計を計算します。合計が 10 を法として 0 に等しい場合、元の値 n は有効なクレジット カード番号です。
今のところ、私はこれを持っています:
これが私の問題です。ここからどこへ行くべきかわかりません。上記のコードはこれまでのところ正しいと確信していますが、関数を使用して 2 桁の数値を生成する積を 1 桁の数値に計算し、リスト内のすべての 1 桁の合計を計算する方法がわかりません。
どんな助けでも大歓迎です。何かをクリアできるかどうか教えてください。
私が取り組んだことを追加しました。
haskell - Haskell の Luhn 関数
私は現在、本Programming in Haskell に取り組んでいます(これはこれまでのところ絶対に驚くべきことです) が、演習 4.8.8 で問題に遭遇しました。
タスクは、ヘルプ関数(数字を 2 倍し、結果が 9 より大きい場合は 9 を引く) と関数を使用して、Haskell でLuhn アルゴリズムを実装することです。luhnDouble :: Int -> Intmod
関数の実装はluhnDouble問題ありませんでしたが、両方を type の関数にするのに苦労していますInt -> Int -> Int -> Int -> Bool。
私はそれを2つの方法でやってみました:
型エラーを受け取ります。
しかし、関数Intに引数として 4 sを与えてBool、結果として a を取得していませんか?
次に、関数をカリー化し、ラムダ式を使用してみました:
しかし、結果として値ifを取得するためにここに式を取り込む方法がわかりません。Bool
誰かが私を助けて、これを解決する方法を教えてもらえますか?