サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
参議院選挙2025
qiita.com/gyu-don
というタイトルは煽りで、個人的にはまだ時期尚早な感じもあると思いますが。 いずれはこちらが標準になるでしょうし。なんだかんだで結構苦労したので、setuptoolsを使うがsetup.pyは使わずにpyproject.tomlとsetup.cfgを使ってパッケージを作る方法をメモしておきます。 pyproject.tomlって? ざっくりいうと、みんなsetup.pyを書いたり動かしたりするのに疲れたのだと思います。 pyproject.tomlについて規定しているPEP 518では、setup.py自体を動かすために必要な依存パッケージを定義する標準的な方法がないことがモチベーションとされています。個人的には、setup_requirements.txtでも用意すればいいのでは、と感じましたが。まぁ、みんなsetup.pyに疲れたのだと思います。 いずれにせよ、setuptoolsの他に
numbaというライブラリを使うと、Pythonのコードを比較的簡単に高速化できます。 うまくいけば、from numba import jitを書いて、高速化したい関数の前の行に@jitを書くだけで高速化できます。 仕組みとしては、numbaはPythonの仮想マシンコードを取得し、LLVM IRにコンパイルし、LLVMを使ってネイティブコードにするようです。 初回実行時は、コンパイル処理が走るので、若干遅くなりますが、重い処理だと、コンパイル時間を考えてもnumbaの方が速いこともあります。 利点と欠点 先に述べておきます。 利点 場合によっては、コード自体は改造せずに手軽に高速化できる コードの改造があったとしても、軽微な改造で済むことも多い 別ファイルに分けてビルドする、みたいな手間なことが必要なく、手軽に.pyファイルの中で使える 欠点 すべてのPython機能がサポートされてい
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 量子コンピュータに関する、学術よりはややビジネスよりのカンファレンス「Q2B 2019」が、カリフォルニア州・サンノゼで開催されたので、行ってきました。 参加した企業たち。うちはギリギリに応募したせいか、載ってません。 大雑把な感想 登壇者はほぼ日本人いないのに、参加者は日本人がかなり多く感じられました 量子コンピュータ業界のカモにされてるのでは、という印象を受けました Googleスプレマシー論文などで盛り上がってはいるものの、結構みんな冷静な感じでした 後で触れますが、NISQの実アプリケーションがないこと、耐誤り訂正にはまだ遠いこ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 背景 スマホの調子が悪くなったので電源を切って入れ直したら、SDカードの、写真を入れていたフォルダだけがきれいに消失した。 サルベージしたら、だいたい戻ってきた気がするので、備忘録として、また、同じ憂き目に遭った人のお役に立てればと、文章に残すことにした。 なお、筆者の環境は、Arch Linuxを使用している。 (たぶん、使ったソフト自体はWindowsやMacでもあると思う) 免責事項 本記事によって生じたいかなる損害も筆者は保証できません。どうしても必要なデータが消失した場合は専門家などに相談されることを強くお勧めします。(筆者は
平成も終わりですね 令和の時代がやってきます。 昭和に古典コンピュータが生まれ、平成でインターネットとともに普及し、令和は量子コンピュータの時代かもしれません。 もしかしたらその次の元号かもしれませんが、そのような不敬なことは言わず、令和を信じましょう。 令和判定回路 元号が変わると、当然ながら、元号を判定するプログラムが必要になります。 量子コンピュータで元号判定をする必要があるかどうかは現時点では定かではありませんが、きっと必要となるでしょう。だって令和だから。 ということで、西暦と月を入れると、令和かそうじゃないかを判定する回路を作っていきましょう。 シミュレータで動かす都合上、ビット数を少なくするため、西暦2000年〜2031年に限定しています。 アルゴリズム概要 令和というと和ですね。加算回路を使ってみましょう。 https://arxiv.org/pdf/quant-ph/95
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじまり 量子コンピュータアドベントカレンダー1日目では、量子コンピュータとは何なのかについて、見ていきます。 量子アニーリング方式と量子ゲート方式 今現在、世間で「量子コンピュータ」と呼ばれているものには、イジングモデルと呼ばれる問題を解くためのマシンと、量子回路と呼ばれるモデルを実行するためのマシンの2種類があります。 これらは区別せずに語られることも多いですが、別のものと捉えるべきです。前者を「量子アニーリング方式」や「量子アニーラ」、後者を「量子ゲート方式」と呼んで区別することがよくあります。 本アドベントカレンダーでは、量子ア
昨日くらいから流行ってます。 以前書いたwildcatで4x4の数独を解いてみたが、昨日くらいから「いいね」が増えはじめました。 Twitter検索してみると、有名な方に取り上げていただいたようです。大変有り難いことです。 ですが、その記事はwildcatが出たばかりの頃に書かれており、今は仕様が大きく変わっていて、最新のwildqat (wildcatから名称変更されました)では動きません。 とはいえ、アニーリングに使うQUBOは変わらないので、そこの部分は流用できます。 (wildqatに限らず、D-Waveや富士通のデジタルアニーラなどの実機にもQUBOは流用できます。ただし、特にD-Waveの場合、グラフ埋め込みなどの別の作業が必要になることがあります) 最新版で書き直してみた ということで、2018年11月現在での最新版で、4x4の数独を書き直してみました。 忙しい人向け: AP
有史以来、人々は「こうあるべき」で戦争を続けてきた この記事は、「こうあるべき」をやめようという記事であると同時に、新たなる「こうあるべき」を人々に押し付ける新たな火種である。 参考までに、オブジェクト指向を巡っては過去にも何度か盛り上がったことがあり、前回の盛り上がりはオブジェクト指向と10年戦ってわかったことだったかと記憶している。かの有名なmatzは、このように言った。 オブジェクト指向と30年付き合ってわかったこと: そんなものは実在しない。 — Yukihiro Matsumoto (@yukihiro_matz) May 10, 2016 今回はオブジェクト指向が5000%理解できる記事を皮切りに、オブジェクト指向が0.05%も理解できない記事、【オブジェクト指向】自然言語を基準に設計することの問題点など、数多くの記事が出てきている。オブジェクト指向がn%理解できる記事まとめに
対数関数 高校数学で習ったような気がする、対数関数。 忘れてしまった人も多いのではないでしょうか。 「こんなもの覚えて何の役に立つんだ」と思って高校の授業を受けていた人もいたかもしれませんが、コンピュータの世界では、たまに出てきます。 統計や機械学習の式の中に出てくる 情報量の議論で出てくる アルゴリズムの話で、計算量のオーダーで O(log N) などと出てくる などです。 対数関数って一体何でしょう。どういう性質があるんでしょう。これらを見ていきましょう。 コードはPythonとJavaScriptで書いていますが、大抵の言語では同じようなものが用意されています。 納得するまで、手元で動かしてみることをおすすめします。 雑に言っちゃうと、桁数を求める関数です。 まずは、一番分かりやすい、常用対数と呼ばれるものを見ていきます。 常用対数はPythonではmath.log10 (numpy
「試して理解 Linuxのしくみ」 Amazonでは "[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識" という名前になっています。 著者の武内さんのハンドルネームから、sat本と呼ばれることも多い書籍です。 武内さんが配布されているCのコードはこちら、私がRustで書き直したコードはこちらにあります。 以下は、ポエムです。 本の感想 私自身は、Linuxやメモリにそれなりには興味を持っていたので、すごく目新しい内容は、それほど多くはありませんでした。けれども、読んで非常によかったと感じています。 「試して理解」と銘打っているとおり、書かれていることを実際に試して、理解を深められるようになっています。なんとなく聞いたことはあったけれど、実際試したことはなかったものを、実際に試すことができたのは本当によかったです。 なぜRustに移植したのか 持論として、「
(2018年11月追記)※wildcatは現在、記事執筆当初から大きく仕様やAPIが変わっています。最新版にも移植しましたので、こちらの記事もご覧ください。 wildcatってなんだ? Wildcatとは、量子コンピュータ系ベンチャーのMDR社が開発した量子アニーリングっぽい問題を解くためのライブラリで、MDR社のAPIを叩いて結果を取ってくる仕組みになっています。 今のところは、登録不要でサーバが落ちない程度試せる、らしいです。 https://github.com/mdrft/wildcat pipでインストールする方法も書かれていますが、まだできたばかりなので更新が多いかもしれないと思って、git cloneして、同じディレクトリにJupyter Notebook作ってやってます。 解きたい問題 手始めに、4x4の数独を解かせてみました。 解く問題は、次の問題とします。
アドベントカレンダー参加者のみなさまがガチで書きすぎて、量子コンピュータに興味はあったけど、まだ詳しく知らない方々は、ちょっとどうしようって思ってるんじゃないでしょうか。 案外誰も書かないので、ここでは、量子コンピュータの話題についていくために本当に最低限必要なこと、つまり、量子コンピュータには2種類ある、という話を書こうと思います。 これ知ってるだけで、量子コンピュータ関係のニュースの見方が変わってきますよ。 量子コンピュータは大きく分けて2種類 量子コンピュータは大きく分けて、量子ゲート方式と量子イジングモデル方式の2種類があります。 どちらも、量子力学の原理を応用して計算に活かしていることには変わりはないのですが、単なるデバイスや処理系の違いというにはあまりにも大きすぎる違いがあるので、必ず区別する必要があります。 雑な例え話をすると、電気ポットも電気掃除機もどっちも電気を使った製品
#include <stdio.h> int main(void) { int i; for(i=1;i<=100;i++) { long long int f = ((21846*i>>16)-(21845*i>>16))*2054842694; long long int b = ((13108*i>>16)-(13107*i>>16))*2054845762; printf((char*)&f); printf((char*)&b); f||b||printf("%d",i); puts(""); } } 整数型のポインタをchar*に読み替えるの、未定義動作だった気がするけど、よく理解していない。 さらには、文字コードがASCII互換かどうかは処理系依存だったはず。 私の処理系ではintは4バイトだったので、long long intにしておかないとNUL文字を入れる場所がなくなっ
量子アニーリングをする場合、QUBOというものを作って、それをイジング模型に変換することが多いようです。 日本地図を四色に塗り分けるためのQUBOを作って、古典アニーリングをやってみた話をします。 #量子アニーリング? 組み合わせ最適化問題を解く確率的アルゴリズムの一種です。 解きたい問題をイジング模型という強磁性体を模したモデルに置き換えて、量子的な効果を含む項を付け加えてコンピュータでシミュレーションすれば、ある種の問題でよい結果が得られる、という論文が昔にあったようです。 これが元々の量子アニーリングです。当時は、量子コンピュータで解くといった話は無く、普通のコンピュータで解くアルゴリズムでした。 ところが、ある日、D-Waveという会社が、実機を使って高速にイジング模型を解く機械を作ってしまいました。 量子アニーリングをする専用機ができてしまったわけですね。 実は、普通に古典コンピ
(遅ればせながらアドベントカレンダーに登録しようと思ったら既にいっぱいだったので、通常記事として投稿) 12/23追記: システムが変わって、アドベントカレンダーに登録したけど書けなかった人がいたら、乗っ取りができるようになったので、乗っ取らせていただきました。 はじめに Pythonのイテレータ、ジェネレータまわりの言語仕様について、なんとなく知ってるつもりになっていたことや、いつの間にか付け加えられてたけど知らなかった機能が結構あったので、ここでちょっとまとめてみました。 (それらは正直いって、あまり使い道が見えてないので、詳しい方、コメントいただけるとありがたいです) 読者としては、イテレータやジェネレータをそれなりには知っている人を対象にしています。 なお、この記事では、特に断りなくitをイテレータを指す変数、Klassをユーザ定義のクラスとして扱います。xをオブジェクトを指す変数
i3 Window Manager とは タイル型のWindow Managerです。というのは、1つのワークスペースにウィンドウが1個しかなければ画面全体を占領して、2つになったら半分、・・・・みたいな具合にウィンドウを配置するタイプのWMのことです。 もちろん、縦分割、横分割などは指定できますし、ウィンドウをタブのようにしたり、普通のWindowsやMacのウィンドウのような、マウスで動かせるフロート型のウィンドウを作ることもできます。 ウィンドウの切り替えや移動がマウスを使わずにキーボードで出来ます。とっつきにくいものの、慣れると非常に快適に操作が出来ます。 日本語の情報なら、Arch Linux wikiに充実しています。 https://wiki.archlinuxjp.org/index.php/I3 また、英語なら、本家のユーザガイドがおすすめです。 https://i3wm
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Qiitaの新着エントリを眺めてると、論理演算子の特殊性について、これまでに2度ほど「初めて知った」と言ってる人を見かけたので、試しにまとめてみる。 知ってる人には当たり前だけど、だからこそ知らない人もいるのではないだろうか。 #短絡評価 trueまたはfalseを返す論理演算子(&&, ||)は、最後まで評価しなくても、途中で返すべき値が分かる場合がある。 これを眺めてほしい。 true && true → true true && false → false false && true → false false && false → false こういう挙動になっていることに気づく。 &&の左側がtrueの場合、&&の右側がtrueだとtrueを返し、falseだとfalseを返す &&の左側がfalseの場合、&&の右側が何であってもfalseを返す 同様に||の場合は、 ||の左
from __future__ import print_function import timeit print("i+=1\t", timeit.timeit("while i<1000000: i+=1", setup="i=0")) print("i=i+1\t", timeit.timeit("while i<1000000: i=i+1", setup="i=0")) print("a[0]+=1\t", timeit.timeit("while a[0]<1000000: a[0]+=1", setup="a=[0]")) print("a[0]=a[0]+1\t", timeit.timeit("while a[0]<1000000: a[0]=a[0]+1", setup="a=[0]"))
#意外とないのね。PDFライブラリ。 簡単にPDFを読み込み・画像化できるライブラリくらい、いくらでもあるだろうと思いきや、案外、使い勝手のいいものはなかなか見つけられなかった。 けれど、Qtを使って書かれたPopplerというライブラリが、なかなかよかったので、使ってみた。 Poppler-qt4 (C++) http://people.freedesktop.org/~aacid/docs/qt4/ python-poppler-qt4 https://pypi.python.org/pypi/python-poppler-qt4/ また、Popplerのドキュメントはこちら。まずはDocument型から読んで、何ができるのか探ればいいと思う。 Qt5版も存在するが、今回は、Qt4版を使用した。 一部は、C++とPython両方で書いた。Pythonは、Python3を使用した。 ここ
#はじめに マインスイーパをアルゴリズムで解くことができないかを考察してみた。 みなさんご存じの通り、マインスイーパは常に確実に解けるわけではなく、確率的にしか解けない場合もある。ここで、マインスイーパを解くアルゴリズムは、以下の2つに分けることができる。 確実に分かる部分のみを解くアルゴリズム。解けない部分は人の手か、乱数による選択や別のアルゴリズムの助けを借りる必要がある。 できるだけ高い確率で解くことを目指すアルゴリズム。 現状、1の、分かる部分のみを解くアルゴリズムを構築し、JavaScriptで実装し、完璧ではないものの、かなりいいところまで解かせることができている。 github上で公開しているので、こちらでお試しあれ。適当にクリックしてマスを開いたあと「Solve」をクリックすれば、確実に分かる部分を埋めてくれる。(動作確認はFirefoxでしか行っていないため、他のブラウザ
このページを最初にブックマークしてみませんか?
『@gyu-donのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く