Что самое крутое, что вы можете сделать в <10 строках простого кода? Помоги мне вдохновить начинающих! [закрыто]

Я тестировал это только для прямоугольных координат, но я думаю, что он должен обобщать на круглые или многоугольники

function wrap ( img, map ) {
  var originalCoords = [ ],
      test = new Image();

  for ( var i = 0; i < map.areas.length; ++i ) {
    var coords = map.areas[i].coords;
    originalCoords.push( coords.split( "," ).map( parseFloat ) );
  }

  function resize () {
    var ratio = img.width / test.width;
    for ( var i = 0; i < map.areas.length; ++i ) {
      map.areas[i].coords = originalCoords[i].map( function ( n ) {
        return ratio * n;
      } ).join( "," );
    }
  }

  test.addEventListener( "load", function () {
    window.addEventListener( "resize", resize, false );
    resize();
  }, false );

  test.src = img.src;
}

var imgs = document.querySelectorAll( "img[usemap]" );
for ( var i = 0; i < imgs.length; ++i ) {
  var map = document.querySelector( "map[name=" + imgs[i].useMap.substring( 1 ) + "]" );
  wrap( imgs[i], map );
}
406
задан 4 revs, 3 users 51% 18 May 2009 в 22:35
поделиться

78 ответов

Когда я был маленьким, я проявлял большой интерес к компьютерам (тогда MSX) и, следовательно, к программированию (все, что было, было вариантом Basic). Я потерял это после того, как вырос, но вернулся к этому, когда узнал, что Counter-Strike - это просто мод, созданный некоторыми фанатами путем модификации кода Half-Life. Это действительно заинтересовало меня программированием снова и снова!

Это не 10 строк кода, но если вы покажете людям исходный код какой-то игры, а затем измените его и заставите делать что-то другое, и продемонстрируйте его вживую Реааааааа сдуло. Вау, это на самом деле не темная магия! Вы можете сделать это!

В наши дни, есть довольно много игр, с которыми вы можете сделать это. Я думаю, что исходный код для всей серии Quake (по крайней мере, от I до III) выпущен.

0
ответ дан 22 November 2019 в 23:33
поделиться

Я думаю, что некоторые классные экспирации в Python с NodeBox были бы отличным началом. У этого есть функции, чтобы нарисовать вещи от квадратов до сложных путей. Он может даже получать изображения с Mac iSight / веб-камеры и манипулировать ими, масштабируя, поворачивая и применяя фильтры.

К сожалению, это только для Mac OS X, поэтому я не думаю, что это будет полезно для обучения , но в качестве примера (если у вас есть Mac) для того, что возможно с небольшим количеством кода, это было бы довольно изящно.

0
ответ дан 22 November 2019 в 23:33
поделиться

Набор Мандельброта можно представить не слишком сложным, например, способом. в Java ниже:

public class MiniMandelbrot {
    public static void main(String[] args) {
        int[] rgbArray = new int[256 * 256];
        for (int y=0; y<256; y++) {
            for (int x=0; x<256; x++) {
                double cReal=x/64.0-2.0, cImaginary=y/64.0-2.0;
                double zReal=0.0, zImaginary=0.0, zRealSquared=0.0, zImaginarySquared=0.0;
                int i;
                for (i = 0; (i < 63) && (zRealSquared + zImaginarySquared < 4.0); i++) {
                    zImaginary = (zReal * zImaginary) + (zReal * zImaginary) + cImaginary;
                    zReal = zRealSquared - zImaginarySquared - cReal;
                    zImaginarySquared = zImaginary * zImaginary;
                    zRealSquared = zReal * zReal;
                }
                rgbArray[x+y*256] = i * 0x040404;
            }
        }
        java.awt.image.BufferedImage bufferedImage = new java.awt.image.BufferedImage(256, 256, 1);
        bufferedImage.setRGB(0, 0, 256, 256, rgbArray, 0, 256);
        javax.swing.JOptionPane.showMessageDialog(null, new javax.swing.ImageIcon(bufferedImage), "The Mandelbrot Set", -1);
    }
}
0
ответ дан 22 November 2019 в 23:33
поделиться

Я написал это для игры на форуме - писать алгоритм ROT13 в как можно меньшем количестве строк. Итак, как насчет этого в C?

rot13(char*s)
{
    int i=-1;
    do{
        i++;
        s[i] = (s[i] >= 65 && s[i] <=90 || s[i] >= 97 &&s [i] <= 122) ?
            ((s[i] < 97) ? 65 : 97) + (((s[i] - ((s[i] < 97) ? 65 : 97)) + 13) % 26) :
            s[i];
    } while(s[i] > 0);
}

Я думаю, что троичный оператор довольно аккуратен, хотя я слышал, что он работает медленнее, чем конструкции. Я еще не успел это для себя ...

0
ответ дан 22 November 2019 в 23:33
поделиться

Вдохновленные ответами Робина Дея и Джона Топли, попросите их вставить в адресную строку браузера:

javascript: var name = prompt («Как вас зовут?», ""); var msg = 'Hello' + name + '
'; newwindow = window.open (); newdocument = newwindow.document; for (var i = 0; i <100; i ++) {newdocument.write ( msg);} newdocument.close ();

Или более наглядно:

var name=prompt("What is your name?", "");
var msg='Hello '+name+'<br>';
newwindow=window.open();
newdocument=newwindow.document;
for (var i=0;i<100;i++)
{
    newdocument.write(msg);
}
newdocument.close();
0
ответ дан 22 November 2019 в 23:33
поделиться

Это, безусловно, самая крутая вещь, которую я когда-либо видел ... и в разобранном виде это довольно просто:

http://blogs.msdn.com/lukeh/archive /2007/04/03/a-ray-tracer-in-c-3-0.aspx[1216 visible

0
ответ дан 22 November 2019 в 23:33
поделиться

Базовое приложение grep на Ruby / Python / Perl.

0
ответ дан 22 November 2019 в 23:33
поделиться

Немного не по теме, но вы можете проверить эту кодировку твита, в которой использовался код as3 длиной менее 140 символов:

http://gskinner.com/playpen/tweetcoding_0/

^ _ ^

0
ответ дан 22 November 2019 в 23:33
поделиться

Рекурсия также может использоваться для решения лабиринта. Как и треугольник Серпинского и другие виды искусства, для меня это намного веселее, чем решение какой-то математической задачи.

0
ответ дан 22 November 2019 в 23:33
поделиться

Основываясь на примере SAPI, который вы предоставили, я использую его, чтобы читать файлы вслух себе (просто перетащите текстовый файл на значок или запустите его из командной строки)

speakfile.vbs :

strFileName = Wscript.Arguments(0)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, 1)
strText = objFile.ReadAll
Set objVoice = CreateObject("SAPI.SpVoice")
objVoice.Speak strText
0
ответ дан 22 November 2019 в 23:33
поделиться

10 Печать «Мохан»
20 Goto 10

0
ответ дан 22 November 2019 в 23:33
поделиться

Мне всегда нравилась Ханойская башня. В Scheme

(define (hanoi x from to spare)
  (if (= x 1)
    (begin
      (display "move ")(display from)(display " to ")(display to)(display "\n"))
  (begin
    (hanoi (- x 1) from spare to)
    (hanoi 1 from to spare)
    (hanoi (- x 1) spare to from))))

Пример вывода

gosh> (hanoi 3 'start 'dest 'spare)
move start to dest
move start to spare
move dest to spare
move start to dest
move spare to start
move spare to dest
move start to dest
#<undef>

Также в Python (хотя он не может обрабатывать 1000 дисков, как версия Scheme)

def hanoi(x, source, dest, spare):
  if x == 1:
    print "%s to %s" % (source, dest)
  else:
    hanoi(x - 1, source, spare, dest)
    hanoi(1, source, dest, spare)
    hanoi(x - 1, spare, dest, source)
0
ответ дан 22 November 2019 в 23:33
поделиться

Как насчет обработки для JavaScript? Я не знаю Processing, но код всегда кажется довольно маленьким для того, что он может делать, он очень нагляден, и вы можете запустить его в браузере.
http://processingjs.org/exhibition

0
ответ дан 22 November 2019 в 23:33
поделиться

Возиться с куки.

Это куки! Дети loooovvve cookies!

  1. Найдите сайт, который использует файлы cookie для чего-то.
  2. Используйте надстройку Firefox для редактирования cookie.
  3. ????
  4. Learning !!!
-1
ответ дан 22 November 2019 в 23:33
поделиться

По-моему, из Quake 3 очень быстрое 1 / sqrt (x):

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char const* argv[])
{
    if (argc != 2) {
        printf("Need a number!\n");
        return 0;
    }
    float number = atof(argv[1]);
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;  // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 ); // what the?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
    printf("%f\n", y);
    return 0;
}
-1
ответ дан 22 November 2019 в 23:33
поделиться

Преобразование изображения в музыку на Python

С мой ответ на Как с помощью Python перебирать каждый 4-й пиксель в каждой 4-й строке? :

#!/usr/bin/env python
import easygui # http://easygui.sourceforge.net/
import Image   # http://www.pythonware.com/products/pil/
import numpy   # http://numpy.scipy.org/

filename = easygui.fileopenbox() # pick a file
im = Image.open(filename) # make picture
im.show() # show picture
ar = numpy.asarray(im) # get all pixels
N = 4
pixels = ar[::N,::4]  # every 4th pixel in every N-th row
notes = pixels.sum(axis=2) / 9 + 24 # compute notes [0, 52]
print "number of notes to play:", notes.size

Примечания может соответствовать разным тонам. Я использую здесь равную умеренную шкалу :

# play the notes
import audiere # http://pyaudiere.org/
import time

d = audiere.open_device()
# Notes in equal tempered scale 
f0, a = 440, 2**(1/12.)
tones = [d.create_tone(f0*a**n) for n in range(-26, 27)] # 53

for y, row in enumerate(notes):
    print N*y # print original row number
    for t in (tones[note] for note in row):
        t.volume = 1.0 # maximum volume
        t.play()
        time.sleep(0.1) # wait around 100 milliseconds
        t.stop()
0
ответ дан 22 November 2019 в 23:33
поделиться

Вы можете использовать библиотеку jQuery (меньше пишите, делайте больше) для достижения великолепного визуального эффекта в веб-формах HTML с минимальным написанием кода. В противном случае функциональные языки, такие как F #, тоже могут делать множество вещей с помощью нескольких строк кода. Ниже приводится решение проблемы номер 8 проекта Эйлер: -

data: - строка чисел в сетке 50 * 20

let data = txt |> Seq.toList |> List.filter System.Char.IsDigit |> List.map System.Char.GetNumericValue

пусть rec partition_5 l = сопоставляет l с | x1: :( x2 :: x3 :: x4 :: x5 :: _ as t) -> [x1; x2; x3; x4; x5]: :( partition_5 t) | _ -> []

let euler_8 = List.map (fun x -> List.fold (*) 1.0 x) (данные partition_5) |> List.max

0
ответ дан 22 November 2019 в 23:33
поделиться
0
ответ дан 22 November 2019 в 23:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: