查看完整版本: c何c++有關於lazy list的程式庫嗎?
頁: [1]

weirdococo 發表於 2017-6-7 12:06 AM

c何c++有關於lazy list的程式庫嗎?

本帖最後由 weirdococo 於 2017-6-7 12:56 AM 編輯

其實以前就很想用(然而完全不想自寫,C的for while又很難用),有沒有類似的東西,可以直接使用?

像是這樣,完全不用管一個list或是vector的長度,甚至不用設定結尾,又可以連成一串的?
lazy listmy Rat constant @randList = lazy (loop { rand });
my Int constant @randIntList = lazy gather for @randList { take ($_ * 1).round(1) };
.say for @randIntList[^100];





...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

ren1244 發表於 2017-6-7 04:56 AM

先說聲抱歉,下列內容可能跟你問的問題無關。
只是這段時間看你發問的問題,有一些想法。

我想不同語言有不同的特性,適合做的事情不一樣。
我感覺得到你跟一般同學有一些不一樣,又或者你們學校正集合著你們這樣的人在訓練。

比起在語言的功能上鑽研
我想提出幾個可能有趣的題目
你可以想想用不同語言來實現

這邊是一些純文字文件的資料
CNS2UNICODE_Unicode BMP.txt
CNS2UNICODE_Unicode 2.txt
CNS2UNICODE_Unicode 15.txt
CNS_phonetic.txt

前三個檔案是CNS-11643與unicode編碼的對照表
最後一個檔案是CNS與注音符號的對照表
測試資料連同說明文件我放在這裡

程式的目的在於讀取這些檔案
並輸出一個unicode與注音符號鍵盤對應的文字檔
例如:
2ji3    朵
2ji3    躲
(前面的2ji3是注音ㄉㄨㄛˇ的鍵盤)
(這東西可以給gcin注音輸入法的檔案讀取)

我會提出這個,主要是牽涉到十萬筆以上資料
你可以用任何一個你覺得適合達成目的或是較為熟悉的語言來處理
看看要跑多久
並且去思考如何提高效能
(也許也會遇到輸出unicode的問題)

這是我以前在某個論壇中一時興起幫人做過的東西
因為對方不懂程式如何編譯
最後我索性用javascript來寫
讓他用網頁就能打開
已完成的程式我放在
https://github.com/ren1244/CinConvert
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

weirdococo 發表於 2017-6-7 10:04 AM

本帖最後由 weirdococo 於 2017-6-7 10:06 AM 編輯

ren1244 發表於 2017-6-7 04:56 AM static/image/common/back.gif
先說聲抱歉,下列內容可能跟你問的問題無關。
只是這段時間看你發問的問題,有一些想法。


先說一下我的想法(最近要考試所以可能要很久以後才會試著實作),
Hash Table可以解決問題,但是C語言沒有,C只有enum。
再來這是固定的資料,不用再執行的時候增加減少,也就是說可以由多個樹狀enum和swich完成。
我不可能用手key去打出enum table,所以我會用script來產生enum table 和 swich。
大概是這樣。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

weirdococo 發表於 2017-6-7 11:21 AM

weirdococo 發表於 2017-6-7 10:04 AM static/image/common/back.gif
先說一下我的想法(最近要考試所以可能要很久以後才會試著實作),
Hash Table可以解決問題,但是C語言沒有 ...

或著把資料轉成json給 一些sql來做查詢,看看速度怎樣。

ren1244 發表於 2017-6-8 03:01 PM

C的for while又很難用
下面這段程式碼是輾轉相除法求最大公因數給你參考
int64_t gcd ( int64_t a, int64_t b )
{
        for(;b>0 && (a%=b);b%=a);
        return a==0?b:a;
}我想好好發揮它的特性,會找到這種迴圈的價值
<br><br><br><br><br><div></div>

CoNsTaRwU 發表於 2017-6-13 11:33 AM

C++ 的 range-based for loop 是你想要的嗎?

如果沒有 C++11,傳統的做法是用 Iterator 搭配 STL 提供的函式

如果你擅長 Template Metaprogramming 的話,很容易可以用 template 寫出各種 lazy 容器

不用 TMP 的話一般是用 pointer 來做 lazy 底層的實作

o_g349 發表於 2017-9-13 10:39 AM

boost 有你想要的 lazy list,基本上他是用 template 實作的,這裡有個 list generation 的使用例子給你看:http://www.boost.org/doc/libs/1_62_0/libs/phoenix/doc/html/phoenix/lazy_list/tutorial_with_examples/list_generation.html
頁: [1]