首页 > 其他分享 >CS61A Discussion12 Q2

CS61A Discussion12 Q2

时间:2024-12-19 14:43:03浏览次数:4  
标签:Q2 return self Discussion12 rest CS61A Link empty first

Definition: A sublist of linked list s is a linked list of some of the elements of s in order. For example, <3 6 2 5 1 7> has sublists <3 2 1> and <6 2 7> but not <5 6 7>.

Definition: A linear sublist of a linked list of numbers s is a sublist in which the difference between adjacent numbers is always the same. For example <2 4 6 8> is a linear sublist of <1 2 3 4 6 9 1 8 5> because the difference between each pair of adjacent elements is 2.

Implement linear which takes a linked list of numbers s (either a Link instance or Link.empty). It returns the longest linear sublist of s. If two linear sublists are tied for the longest, return either one.

 

 

class Link:
    """A linked list is either a Link object or Link.empty

    >>> s = Link(3, Link(4, Link(5)))
    >>> s.rest
    Link(4, Link(5))
    >>> s.rest.rest.rest is Link.empty
    True
    >>> s.rest.first * 2
    8
    >>> print(s)
    <3 4 5>
    """
    empty = ()

    def __init__(self, first, rest=empty):
        assert rest is Link.empty or isinstance(rest, Link)
        self.first = first
        self.rest = rest

    def __repr__(self):
        if self.rest:
            rest_repr = ', ' + repr(self.rest)
        else:
            rest_repr = ''
        return 'Link(' + repr(self.first) + rest_repr + ')'

    def __str__(self):
        string = '<'
        while self.rest is not Link.empty:
            string += str(self.first) + ' '
            self = self.rest
        return string + str(self.first) + '>'
    
def linear(s):
    #Fing longest with d from first
    def complete(first, rest):
        if rest is Link.empty:
            return Link(first)
        elif rest.first - first == d:
            return Link(first, complete(rest.first, rest.rest))
        else:
            return complete(first, rest.rest)
    if s is Link.empty:
        return s
    longest = Link(s.first)
    while s is not Link.empty:
        t = s.rest
        while t is not Link.empty:
            d = t.first - s.first
            candidate = Link(s.first, complete(t.first, t.rest))
            if length(candidate) > length(longest):
                longest = candidate
            t = t.rest
        s = s.rest
    return longest

def length(s):
    if s is Link.empty:
        return 0
    return 1 + length(s.rest)

  

标签:Q2,return,self,Discussion12,rest,CS61A,Link,empty,first
From: https://www.cnblogs.com/s1mple/p/18617218

相关文章

  • 题解:(A)[EPXLQ2024 fall round] 风吹起了从前
    (A)[EPXLQ2024fallround]风吹起了从前题意给定\(n\)个字符串\(a_1\)到\(a_n\)。第\(i\)个字符串拥有一个深度值\(r_i\),有一个价值\(v_i\)。再给你\(m\)次询问,每次给出一个字符串\(t\)和深度\(d\),求以\(t\)为前缀且深度值小于\(d\)的字符串价值之和。Soluio......
  • RabbitMQ26问,基本涵盖了面试官必问的面试题(知识满满!!!)
    目录1.RabbitMQ是什么?2.RabbitMQ特点?3.AMQP是什么?4.AMQP协议3层?5.AMQP模型的几大组件?6.说说生产者Producer和消费者Consumer?7.为什么需要消息队列?8.说说Broker服务节点、Queue队列、Exchange交换器?9.消息队列有什么优缺点10.如何保证消息的可靠性?11.什么是Routi......
  • 序列到序列的学习 (seq2seq - 词嵌入 - Embedding层 - mask掩码 - 后续会加入注意力机
    目录0.前言1.编码器 (encoder)补充1:词嵌入(WordEmbedding)补充2:嵌入层(EmbeddingLayer)2.解码器(decoder)3.损失函数4.训练5.预测6.预测序列的评估(BLEU)7.小结0.前言课程全部代码(pytorch版)已上传到附件本章节为原书第9章(现代循环网络),共分为8......
  • SpringBoot游泳馆会员管理系统q26c5 带论文文档1万字以上,文末可获取
    开题报告内容一、选题背景与意义随着健康意识的提升,游泳馆作为重要的健身场所,其会员管理效率直接影响到顾客体验和经营效益。传统的会员管理方式存在信息记录不全、查询不便、服务不精准等问题。因此,开发一套高效、智能的游泳馆会员管理系统具有重要意义,旨在提升会员服务质量......
  • RabbitMQ2:介绍、安装、快速入门、数据隔离
    欢迎来到“雪碧聊技术”CSDN博客!在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目......
  • jsp甘肃特产销售系统的设计与实现4q21k(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,特产商品,特产分类,促销特产开题报告内容一、研究背景与意义甘肃省因其独特的地理环境和气候条件,孕育了丰富的特产资源,如苹果、百合、枸杞、中药材等,深受......
  • 深度学习对对联:探索seq2seq-couplet项目的智能对联生成
    引言对联作为中国传统文化的瑰宝,一直以其对仗工整、意境深远而备受推崇。随着人工智能技术的发展,利用深度学习来生成对联成为了一个引人注目的研究方向。本文将深入探讨seq2seq-couplet项目,这是一个利用序列到序列(seq2seq)模型来实现智能对联生成的开源项目。seq2seq-couple......
  • SSM水果库存管理系统30q2h 可视化统计图
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:公告类型,公告信息,员工,水果类型,水果信息,供应商,仓库信息,采购信息,销售信息开题报告内容一、项目背景与意义随着信息技术的飞速发展,水果库存管理......
  • 机器翻译之seq2seq训练、预测、评估代码
    目录1.seq2seq训练代码2.预测代码  3.评估代码 4.知识点个人理解 1.seq2seq训练代码seq2seq的训练代码:pytorch中训练代码一般都相同类似#将无效的序列数据都变成0(屏蔽无效内容的部分)defsequence_mask(X,valid_len,value=0):"""valid_len:有效序......
  • 机器翻译之创建Seq2Seq的编码器、解码器
    1.创建编码器、解码器的基类1.1创建编码器的基类fromtorchimportnn#构建编码器的基类classEncoder(nn.Module):#继承父类nn.Moduledef__init__(self,**kwargs):#**kwargs:不定常的关键字参数super().__init__(**kwargs)defforwa......