Ред на Фибоначи написан на Lisp
Публикувано от Ivelin Pavlov в Lisp Код, Код на 18 ноември 2012г.
Реда на Фибоначи написан на Лисп
(define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) ;izpolzvane (fib 6) ;otgovor 8
Факториел в Lisp
Публикувано от Ivelin Pavlov в Lisp Код, Код на 18 ноември 2012г.
Факториел от число на езика Лисп
(define (fact n) (define (fact_iter p i) (if (> i n) p (fact_iter (* p i) (+ i 1)))) (fact_iter 1 1)) ;izpolzvane (fact 5) ;vryshta 120
Функции с координати в Лисп
Публикувано от Ivelin Pavlov в Lisp Код, Код на 14 ноември 2012г.
Функция за проверка дали една точка с координати (X Y) е в един кръг с център (0,0) и радиус b, и извън кръг с център (0,0) и радиус a.
Първият начин е директно с една дефиниция:
(define (isIn? x y a b) (and (<= (+ (* x x) (* y y)) (* b b)) (> (+ (* x x) (* y y)) (* a a))))
Другия начин е с дефиниране дали една точка е в кръг и след това дефиниране на главната функция:
(define (inCircle? x y z) (<= (+ (* x x) (* y y)) (* z z))) (define (isIn? x y a b) (and (inCircle? x y b) (not (inCircle? x y a))))
Основни функции в Лисп
Публикувано от Ivelin Pavlov в Lisp Код, Код на 14 ноември 2012г.
За естествени числа:
функции за проверка на число дали е четно, нечетно, позитивно.
Функции за модул на число, факториел, сума от 1 до n и ред на Фибуначи.
(define (odd? x) (= (modulo x 2) 0)) (define (even? x) (= (modulo x 2) 1)) (define (positive? x) (> x 0)) (define (abs x) (cond ((> x 0) x) ((= x 0) 0) ((< x 0) (- 0 x)))) (define (fact n) (cond ((= n 0) 1) (else (* n (fact (- n 1)))))) (define (sum x) (if ((= x 1) 1) (+ x (sum (- n 1))))) (define (fib n) (cond ((= n 1) 1) ((= n 2) 1) (else (+ (fib (- n 1)) (fib (- n 2))))))
Функция за число на степен
(define (pow a n) (if (even? n) (if (= n 0) 1 (* (pow a (/ n 2)) (pow a (/ n 2)))) (if (= n 1) a (* (pow a (- n 1)) a)))) (pow 2 5)
Android custom loader – за зареждане
Публикувано от Ivelin Pavlov в Android Код, Код на 12 ноември 2012г.
Статична снимка за зареждане в Андроид (Loader).
Можете да скривате и показвате когато си поискате зареждането. Това става чрез функциите startLoading() и stopLoading().
<RelativeLayout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:id="@+id/loaderLayout" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="@color/menuBackground" android:clickable="true" android:visibility="gone" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:contentDescription="@string/loading" android:src="@drawable/loader" /> </RelativeLayout> </RelativeLayout>
ImageView loaderImageView; View loaderLayout; RotateAnimation animation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loaderImageView = (ImageView) findViewById(R.id.imageView1); loaderImageView.setDrawingCacheEnabled(true); loaderImageView.setDrawingCacheQuality(loaderImageView.DRAWING_CACHE_QUALITY_HIGH); animation = new RotateAnimation(0f, 355f,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f); animation .setInterpolator(new LinearInterpolator()); animation .setRepeatCount(Animation.INFINITE); animation .setDuration(2000); loaderLayout = findViewById(R.id.loaderLayout); startLoading(); DoSomething(); stopLoading(); } protected void startLoading() { loaderLayout.setVisibility(View.VISIBLE); loaderImageView.startAnimation(animation); } protected void stoptLoading() { loaderLayout.setVisibility(View.GONE); // Later.. stop the animation loaderImageView.setAnimation(null); } protected void doSomething() { //TODO something };